
위 문제를 먼저 이해해보자.
# 4949
import sys
while True:
stack = []
con = 1
line = sys.stdin.readline().rstrip()
if line == '.':
break
for i in line:
if i == '(' or i == '[':
stack.append(i)
elif i == ')':
if len(stack) == 0:
con = 0
break
top = stack.pop()
if top == '[':
con = 0
break
elif i == ']':
if len(stack) == 0:
con = 0
break
top = stack.pop()
if top == '(':
con = 0
break
if len(stack) == 0 and con == 1:
print("yes")
else:
print("no")
위 문제는 스택을 활용하면 쉽게 해결할 수 있다.
다만 처음에는 "(", ")" 의 스택과 "[", "]" 스택을 따로 만들었는데 이렇게 하면 ( [ ) ] 와 같이 번갈아 나오는 경우도 "yes"라고 잘못 출력하기 때문에 스택을 하나로 바꿔 작성하였다.