왼쪽 괄호일 경우 스택에 추가해주고, 오른쪽 괄호일 경우 쌍을 이루는 괄호와 일치하는지 비교한다.
오른쪽 괄호가 왼쪽 괄호와 쌍을 이룰 경우, 스택의 가장 상위 괄호를 pop 해준다.
그렇지 않을 경우, 탐색을 종료한다.
for tc in range(10):
N = int(input())
lst = list(map(str, input()))
stck = list()
# 왼쪽 괄호
left = ['(', '{', '[', '<']
# 오른쪽 괄호
right = [')', '}', ']', '>']
for i in range(N):
if lst[i] in left:
stck.append(lst[i])
if lst[i] in right:
# 가장 상위의 괄호 값과 쌍이라면
if right.index(lst[i]) == left.index(stck[-1]):
# 상위의 원소 제거하기
stck.pop()
else:
break
res = 0
if len(stck) == 0:
res = 1
print("#{} {}".format(tc + 1, res))