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

문제는 어렵게 보이지만 결국 올바른 괄호 문자열 ' ( ' , ' ) ' 을 썼는지 확인하는 문제. 올바르게 썼다면 YES, 아니라면 NO 를 출력.
import sys
T = int(sys.stdin.readline().strip())
for _ in range(T):
PS = sys.stdin.readline().strip()
stack = []
for j in PS:
if j == '(':
stack.append(j)
elif j == ')':
if stack:
stack.pop()
else:
print("NO")
break
else:
if stack == []:
print("YES")
else:
print("NO")
입력받은 문자열 내에서 for문을 돌아서 만약 문자가 ( 라면 리스트에 추가해주고 )라면 팝을 해주는데 만약 스택이 비어있다면 "NO"를 출력해주고 포문을 종료한다.
만약 break가 안뜨고 잘 반복문을 순회했다면 else 문으로 가는데
이 때 스택이 비어있는 경우 YES를 출력해주고 아니라면 NO를 출력해준다.
이 이유는 만일 PS가 ( ( ) 인 경우
for 반복문을 돌고 나왔을 때 ( 가 남기 떄문이다.