Algorithm/백준 BOJ

[백준] [Python] #9012 괄호

은세라 2021. 9. 25. 03:47

https://www.acmicpc.net/problem/9012

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

중간에 풀다가 막혔는데 is_empty라는 flag를 넣음으로서 해결함

'('면 append하고 아니면 pop하는데, 마지막에 stack에 뭐가 남아있으면 NO만 하려 했더니

걸러지지 않는 케이스가 있었다

 

')' 같은 경우가 그러했다.

애초에 '('이 append된 적이 없어서 stack이 비어있거나, '('보다 ')'갯수가 더 많은 경우 그러했다.

 

따라서 비정상적인 사유로 인해 stack이 비어있는 채로 for문이 끝나는 경우를 위해 flag인 is_empty를 넣었다.

 

n = int(input())

for _ in range(n):
    stack = []
    is_empty = False
    isVps = input()
    for i in range(len(isVps)):
        if isVps[i] == "(": stack.append(isVps[i])
        else:
            if not stack: 
                is_empty = True
                break
            else: stack.pop(-1)

    if(len(stack)>0 or is_empty) : print("NO")
    else: print("YES")