적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Algorithm/Baekjoon

[Swift 알고리즘] 백준 4949 균형잡힌 세상

hongssup_ 2023. 3. 8. 17:44
반응형

스택 Silver 4

백준 4949 균형잡힌 세상

 

종료 조건 "." 이 들어올 때까지 문장을 input 으로 받아서 알파벳은 무시하고 [] () 괄호 짝만 맞추면 되는 문제.

 

( 혹은 [ 이면 push

] 혹은 ) 이면 확인하고 pop

마지막에 스택 남는거 확인하고 리턴

while true {
    let input = readLine()!
    if input == "." { break }
    else {
        print(isBalanced(input))
    }
}

func isBalanced(_ input: String) -> String {
    var stack: [Character] = []
    for i in input {
        switch i {
        case "(", "[":
            stack.append(i)
        case ")":
            if stack.last == "(" {
                stack.removeLast()
            } else {
                return "no"
            }
        case "]":
            if stack.last == "[" {
                stack.removeLast()
            } else {
                return "no"
            }
        default:
            break
        }
    }

    return stack.isEmpty ? "yes" : "no"
}

 

반복문 돌릴 때, 위 처럼 while true 로 무한 루프 돌리다가 "." 를 input 으로 받으면 종료해줘도 되지만

다음과 같이 아예 종료 조건을 while 조건 안에 넣으니 훨씬 간결해 보인다. 

while let input = readLine(), input != "." {
    print(isBalanced(input))
}
728x90
반응형