while True:
line = input().rstrip()
if line == '.':
break
stack = []
balanced = True
for char in line:
if char in '([':
stack.append(char)
elif char == ')':
if not stack or stack[-1] != '(':
balanced = False
break
stack.pop()
elif char == ']':
if not stack or stack[-1] != '[':
balanced = False
break
stack.pop()
print("yes" if balanced and not stack else "no")
while True 를 통해서 사용자에게 한 줄씩 입력받는다. 마지막 문자가 . 일 경우 종료한다.
각 줄에 대해서 빈 스택을 초기화 하고 balanced 변수에 균형 잡힌 문자열인지 아닌지 나타내는 것을 판단할 것이다.
여는 괄호를 만나면 스택에 추가, 닫는 괄호를 만나면 스택이 빌 경우는 False / 스택의 마지막 요소가 짝이 맞지 않으면 False 로 balanced 변수 값을 설정한다. 스택이 비지 않을 경우 해당 괄호를 pop 한다
모든 문자를 순회한 수, 스택이 비어 있고 balanced 가 True 면 'yes' False 면 'no' 를 출력한다.