📝 코테/BOJ

[Swift] 백준9012 괄호

JerryiOS 2023. 3. 28. 15:00

import Foundation

/// 기본 VPS : ()
/// 만일 x가 VPS라면 (x)도 VPS
/// x: VPS, y: VPS라면 xy도 VPS

let T = Int(readLine()!)!

for _ in 1...T {
    let str = readLine()!
    if str.isVPS {
        print("YES")
    } else {
        print("NO")
    }
}

extension String {
    var isVPS: Bool {
        var stack = [Character]()
        
        for char in self {
            if char == "(" {
                stack.append(char)
            } else if char == ")" {
                if stack.isEmpty {
                    return false    // 첫글자에 ")"가 온경우
                } else {
                    stack.removeLast()    // 가장 최근에 스택에 들어간 "("를 지움, 즉 "()"를 제거하는 것
                }
            }
        }
        
        return stack .isEmpty ? true : false
    }
}

 

반응형