import sys
while True:
sentence = sys.stdin.readline().rstrip()
if sentence == '.':
break
stack = []
isBalanced = True
for ch in sentence:
if ch == '[' or ch == '(':
stack.append(ch)
elif ch == ']':
if not stack or stack[-1] == '(':
isBalanced = False
break
elif stack[-1] == '[':
stack.pop()
elif ch == ')':
if not stack or stack[-1] == '[':
isBalanced = False
break
elif stack[-1] == '(':
stack.pop()
if not stack and isBalanced:
print('yes')
elif stack or not isBalanced:
print('no')
코드 설명
입력의 개수가 정해져있지 않고, 입력의 종료조건이 온점 하나(.
)만 입력하는 경우이므로 조건식 sentence == '.'
을 만족하는 경우 반복문을 빠져나올 수 있도록 한다.
sys.stdin.readline()
를 사용하는 경우 개행 문자(\n
)를 포함하여 입력을 받기 때문에 while 문 안의sentence == '.'
조건식이 만족되지 않고 계속해서 입력을 받는 문제가 발생할 수 있다.
따라서.rstrip()
을 사용하여 개행문자를 제거해주어야 한다.