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


3년 전부터 굉장히 주기적으로 푼 문제이다
1) stack을 만들어서 (이 나오면 push, )이 나오면 pop하면 된다.
2) pop할 때 stack이 empty라면 answer = "NO" ex) '))))'
3) 주어진 입력을 다 훑는 반복문이 끝났는데도 stack이 남아있다면 answer = "NO" ex) '()(((('
이 2가지 경우만 잘 처리해주면 되는 문제이다.
+) answer = "YES"로 초기화하여 괄호가 맞지 않는 경우에만 "NO"로 바꿔주면 편하다.
import sys
input = sys.stdin.readline
n = int(input())
for _ in range(n):
s = input().rstrip()
stack = []
answer = "YES"
for i in range(len(s)):
if s[i] == '(':
stack.append('(')
else:
if not stack: # )인데 스택이 비어있다면
answer = "NO"
break
stack.pop()
if stack:
answer = "NO"
print(answer)