https://www.acmicpc.net/problem/4949

온점 (".") 하나를 찍을 때까지 반복해서 문장을 받는데 괄호가 잘 열리고 닫겼는 지 파악해서 YES or NO를 출력하는 문제.
문자열을 받고 for 문을 돌아 ( 나 [ 를 만나면 리스트에 append 하고 )나 ] 를 만나면 (나 [ 가 있다면 pop 해준다. 만약 없다면 거기서 no를 바로 출력해버린다.
만약 for문을 다 돌았다면 리스트를 검사해서 비어있다면 yes,
괄호가 남아있다면 no 를 출력한다.
while(True):
word=input()
stack=[] # 괄호를 추가할 리스트 stack
if word=='.': # . 이 들어오면 종료
break
for w in word:
if w=='(' or w=='[': # 여는 괄호가 오면 stack에 추가
stack.append(w)
elif w==')': # ) 인 경우
if stack and stack[-1]=='(': # stack이 비어있지 않고, 마지막 요소가 ( 이면 pop
stack.pop()
else: # stack이 비어있거나 짝이 맞지 않으면 stack에 )을 추가하고 break
stack.append(w)
break
elif w==']': # ] 인 경우
if stack and stack[-1]=='[': # stack이 비어있지 않고, 마지막 요소가 [ 이면 pop
stack.pop()
else: # stack이 비어있거나 짝이 맞지 않으면 stack에 ]을 추가하고 break
stack.append(w)
break
if stack == []: # stack이 비어있으면 모든 괄호들의 균형이 맞으므로 Yes 출력
print('yes')
else: # stack이 비어있지 않으면 괄호들의 균형이 맞지 않는 것이므로 No 출력
print('no')