분명 스택을 이용해서 푸는 걸 어디서 봤던 것 같은데... 기억이 안 나서 처음에는 (면 count를 +1을 하고 )면 -1을 하는 코드를 짰다. 그런데 그렇게 하면 ))((처럼 VPS가 아닌 입력도 YES로 출력한다. 그래서 스택을 이용하는 코드를 열심히 생각했고, 스택의 특징은 pop이니까 짱구를 열심히 굴렸다..
그리하여 완성된 코드..!
import sys
T = int(sys.stdin.readline())
for _ in range(T):
num = list(sys.stdin.readline().strip())
if len(num) % 2 != 0:
print("NO")
continue
stack = []
for i in num:
if not stack:
if i == ')':
stack.append(0)
break
stack.append(i)
else:
if stack[-1] != i:
stack.pop()
else:
stack.append(i)
if not stack:
print("YES")
else:
print("NO")

import sys
T = int(sys.stdin.readline())
for _ in range(T):
num = list(sys.stdin.readline().strip())
if len(num) % 2 != 0:
print("NO")
continue
stack = []
for i in num:
if not stack: # 비어 있다면
if i == ')':
print("NO")
break
stack.append(i)
else:
if stack[-1] != i:
stack.pop()
else:
stack.append(i)
else:
if not stack:
print("YES")
else:
print("NO")

import sys
T = int(sys.stdin.readline())
for _ in range(T):
num = list(sys.stdin.readline().strip())
if len(num) % 2 != 0:
print("NO")
continue
stack = []
for i in num:
if not stack:
if i == ')':
print("NO")
break
stack.append(i)
else:
if i == ')':
stack.pop()
else:
stack.append(i)
else:
if not stack:
print("YES")
else:
print("NO")
if stack[-1] != i:
대신 같은 뜻인
if i == ')':
으로 바꾸어 보았다.

import sys
T = int(sys.stdin.readline())
for _ in range(T):
num = list(sys.stdin.readline().strip())
if len(num) % 2 != 0:
print("NO")
continue
stack = []
for i in num:
if i == '(':
stack.append(i)
else:
if not stack: # 비어 있다면
print("NO")
break
else:
stack.pop()
else:
if not stack:
print("YES")
else:
print("NO")
