출처 | https://www.acmicpc.net/problem/9012
T =int(input())
for i in range(T):
stack = []
a = input()
for j in a:
if j == '(':
stack.append(j)
elif j == ')':
if stack:
stack.pop()
else:
print("NO")
break
else:
if not stack:
print("YES")
else:
print("NO")
기본적인 Stack 문제이다. if문을 어떻게 사용하느냐에 따라 조건 분기를 다르게 가는데 첫 번째 for문을 통해서 돌면서 if문 elif 문으로 2개의 경우의 수로 구체화 하여 풀었다.
추가적으로 ')'을 만났을 때 2가지 경우의 수로 또 나뉘게 된다.
stack.pop
stack의 위치에 대해서 왜 for문에서 선언한 이유를 궁금해 한다면, 만약에 T밑에 stack을 선언 했다면, 값 자체가 지속적으로 stack 되어 초기화 되지 못한다.