N = int(input())
for i in range(N): # N번만큼 반복
temp = input()
stack = []
for i in temp:
if i == '(' :
stack.append(i)
elif i == ')':
if len(stack) != 0 and stack[-1] == '(': # stack이 비어 있지않고, 최상단 값이 '(' 이면 ')'을 만나면 VPS
stack.pop() # 위의 조건을 만족하면 pop
else:
stack.append(')')
break
if len(stack) == 0: # 모든 문자가 VPS면 stack의 길이는 0
print('YES') # 따라서 YES
else:
print('NO')
한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last in First Out) 형식의 자료구조
가장 최근에 스택에 추가한 항목이 가장 먼저 제거된다.
Python에서는 list 사용