할루루 2018. 2. 23. 18:00
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
let input = Int(readLine()!)!
var inputs = [String]()
for _ in 1...input{
    inputs.append(readLine()!)
}
for input in inputs{
    var stack = [Character]()
    for i in input{
        if(i == "("){
            stack.append("(")
        } else {
            if let paren = stack.last {
                if(paren == "("){
                    stack.removeLast()
                } else {
                    stack.append(")")
                }
            } else {
                stack.append(")")
            }
        }
    }
    if(stack.isEmpty){
        print("YES")
    } else {
        print("NO")
    }
}
cs



스택의 활용.


괄호의 짝이 맞으면 스택에서 없애고 맞지 않으면 스택에 쌓는다.