문제
4949번: 균형잡힌 세상
하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마
www.acmicpc.net
코드
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 |