문제
코드
My answer
import sys
input=sys.stdin.readline
while(1):
flag=1
stack=[]
tmp=input().rstrip()
if(tmp=='.'):break
tmp=[i for i in tmp]
for i in tmp:
if(i.isalpha() or i=='.' or i==' '):continue
else:
if(i in ['(','[']):
stack.append(i)
else:
if(stack==[]):
flag=0
break
if(i==')'):
if(stack[-1]=='('):
stack.pop()
else:
flag=0
break
if(i==']'):
if(stack[-1]=='['):
stack.pop()
else:
flag=0
break
if(flag and stack==[]):print("yes")
else:print("no")
풀이
전형적인 스택문제에서 나오는 괄호 짝 맞추기 문제였다. 그냥 여는괄호는 stack에 넣고 닫는괄호가 나오면 stack맨마지막에 있는 괄호와 짝이 맞으면 pop하고 맞지않으면 바로 종료하면 된다. 다 끝난후에 stack에 남는 괄호가 있는지도 확인해줘야 한다.
728x90
반응형
'코딩테스트 > 백준[Python]' 카테고리의 다른 글
[Python] 백준 #9184- 신나는 함수 실행 (0) | 2022.01.20 |
---|---|
[Python] 백준 #3986- 좋은 단어 (0) | 2022.01.19 |
[Python] 백준 #1874- 스택 수열 (0) | 2022.01.19 |
[Python] 백준 #2164- 카드 2 (0) | 2022.01.19 |
[Python] 백준 #18258 - 큐 2 (0) | 2022.01.19 |