[문제]

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

 

9012번: 괄호

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

www.acmicpc.net

 


[풀이]

알고리즘에 stack 카테고리가 있어서 stack을 이용해 풀었다.

 

'('일 경우 stack에 쌓아주고, ')'일 경우 pop을 해준다.

만약 ')'이고 stack이 비어있을 경우 미리 선언해둔 flag를 True로 설정하고 조건문을 빠져나온다.

 

그 후 stack이 비어있고, flag이 True일 경우에는 "YES"를 출력하고 아닐 경우 "NO"를 출력한다.

 


[코드]

if __name__ == '__main__':
    for _ in range(int(input())):
        s = list(input())
        stack = []
        flag = False

        for i in range(len(s)):
            if s[i] == '(':
                stack.append(s[i])
            else:
                if not stack:
                    flag = True
                    break
                else:
                    stack.pop()
        if not stack and not flag:
            print("YES")
        else:
            print("NO")