링크텍스트
스택의 원리를 사용한 간단한 문제이다.
괄호 () 의 짝이 맞는지를 확인해서 맞으면 "YES", 틀리면 "NO"를 순서대로 출력한다.
n = int(input())
input_arr = []
answer_arr = []
for _in range(n):
input_arr.append(input())
for arr in input_arr:
br = False
stack = []
for el in arr:
if el == "(":
stack.append(el)
else:
if stack:
stack.pop()
else:
br = True
if stack or br:
answer = "NO"
else:
answer = "YES"
answer_arr.append(answer)
for i in answer_arr:
print(i)
"(" 일 경우 스택에 넣고(파이썬의 list, append시 오른쪽에 추가되는 개념으로 생각하면 된다.)
")" 일 경우 스택에 있는 요소들을 꺼낸다. (pop시 왼쪽에 있는 요소가 꺼내진다.)
이를 반복한 후 스택에 남아 있는 요소들이 없을 경우 짝이 제대로 맞는 것,
스택에 요소들이 남아있을 경우 짝이 제대로 맞지 않은 것으로 판단하면 된다.
또한 스택에 아무것도 있지 않은 상태에서 ")"가 들어왔을 때는 짝이 제대로 맞지 않은 것으로 판단한다.