'('와 ')'로만 이루어진 문자열을 PS(Parenthesis String)라 하는데 이 중 괄호 모양이 바르게 구성된 문자열을 VPS(Valid Parenthesis String)이라고 부른다. 입력으로 주어지는 괄호 문자열이 VPS인지 아닌지 판별해야 한다.
첫째 줄에는 테스트 케이스의 개수 T가 주어지고 각 테스트 케이스로는 괄호 문자열(PS)이 주어진다.
주어진 테스트 케이스가 VPS이면 "YES", VPS가 아니면 "NO"를 출력한다.
import sys
n = int(input())
input = [sys.stdin.readline().strip() for _ in range(n)]
def top(arr):
# 현재 스택 맨 위에 있는 요소 확인
if (len(arr)==0): return -1
return arr[-1]
def printAnswer(arr):
# stack에 남아있는 괄호가 없으면 VPS
# 남아있는 괄호가 있으면 VPS가 아님
if (len(arr) == 0): print("YES")
else: print("NO")
for ps in input:
stack = []
for p in ps:
if p == ')' and top(stack) == '(':
stack.pop()
# 괄호가 짝을 찾으면 괄호 쌍을 제거
else: stack.append(p)
# 짝이 아니면 괄호를 stack에 추가
printAnswer(stack)