[Swift] 백준 9012 - 괄호

sun02·2021년 11월 6일
0

알고리즘

목록 보기
6/52

문제링크

"("와 ")"가 쌍으로 존재하면 되기때문에
"("인 경우 count 변수를 +1, ")"인경우 count 변수를 -1 해주고
최종적으로 count의 값이 0이 된다면 YES를 출력하도록 하였다.

그러나 이 때, "())(()" 와 같이 count의 값은 0이지만, 한 쌍의 괄호기호는 아닌 경우가 있다.
이 경우를 제외하기 위해 ")"에서 count -1한 이후 count가 0보다 작다면 break를 사용하여 끝까지 진행하지 않고 바로 NO를 출력하도록 하였다.


import Foundation

 let testCase = Int(readLine()!)!

 for _ in 0..<testCase {

     let line = readLine()!
     var count = 0

     for char in line {
         if char == "(" {
             count += 1
         } else if char == ")" {
             count -= 1
             if count < 0 {
                 break
             }
         }
     }

     if count == 0 {
         print("YES")
     } else {
         print("NO")
     }

}
  • 그런데 이 풀이는 시간이 16ms 소요되지만 출력방법만 아래와 같이 바꿔주면 시간이 12ms로 크게 줄어든다

import Foundation

let testCase = Int(readLine()!)!

for _ in 0..<testCase {

    let line = readLine()!
    var count = 0


    for char in line {
        if char == "(" {
            count += 1
        } else if char == ")" {
            count -= 1
            if count < 0 {
                break
            }
        }
    }

    print(count == 0 ? "YES" : "NO")
}

추가로 알고리즘 분류 보니 스택으로 구현하는 것도 괜찮을 것 같다..!

print(조건 ? 참일경우 : 거짓일 경우) 이거 꼭 기억해야겠다

0개의 댓글