[Swift] 백준 10799 - 쇠막대기
솔직히 말하자면, 못풀었다 🥲
그래서 이 풀이 푸신 분들 블로그 풀이 참고해서 풀었다 (링크 걸어도 될지,, 모르겠어서 안걸었지만,, 구글에 쳐서 나오는 swift풀이 몇 분 안계신데 그 분들꺼 다 봤어요)
그리고 백준 사이트에서 다른 분들 풀이도 본 결과!! 핵심은,, 레이저 () 가 나오는 경우를 한 묶음으로 보고, 이 경우에 막대기 개수만큼 더해준다는 것이였다.
그래서
- "("인 경우, 막대기 하나가 추가된 것이기 때문에 stack에 +1
- ")"인 경우
- 만약 바로 앞의 character가 "("라면 레이저로 간주하여 count에 stack(막대기 개수)만큼 더해주고 더해진 레이저의 반쪽"("을 빼야하기 때문에 stack -1해준다
- 그렇지 않다면, 막대기의 말단으로 여겨 count +1, stack -1 해준다.
풀이 코드
let line = readLine()!.map{String($0)}
let stack = 0
let count = 0
for i in 0..<line.count {
if line[i] == "(" {
stack += 1
} else {
stack -= 1
if line[i-1] == "(" {
count += stack
} else {
count += 1
}
}
}
print(count)
Author And Source
이 문제에 관하여([Swift] 백준 10799 - 쇠막대기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sun02/Swift-백준-10799-쇠막대기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)