파이썬 백준 4949번
실버4
https://www.acmicpc.net/problem/4949
문제 보기
문제 풀기
빈 bracket_stack = [] 에 열린 괄호가 나올때마다 append() 로 추가 시킴.
닫힌 괄호가 등장하면 bracket_stack 이 비어있는지 또는 bracket_stack 의 마지막 원소가 다른 형태의 열린 괄호인지 확인하여 check.
조건을 만족하지 못하는 경우를 벗어나 yes 를 출력하기 위한 조건 elif 에 닫힌 같은 형태의 괄호가 등장하면 pop() 으로 제거.
열린 괄호는 순차적으로 쌓아 올리고 닫힌 괄호가 나오면 순차적으로 제거하는 조건으로 문제 해결.
코드 보기
import sys
inputdata = sys.stdin.readline
while True:
inspection_data = str(inputdata().rstrip())
if inspection_data == '.':
break
bracket_stack = []
check = True
for char in inspection_data:
if char == '(' or char == '[':
bracket_stack.append(char)
elif char == ')':
if not bracket_stack or bracket_stack[-1] == '[':
check = False
break
elif bracket_stack[-1] == '(':
bracket_stack.pop()
elif char == ']':
if not bracket_stack or bracket_stack[-1] =='(':
check = False
break
elif bracket_stack[-1] == '[':
bracket_stack.pop()
if check == True and not bracket_stack:
print('yes')
else:
print('no')
# So when I die (the [first] I will see in (heaven) is a score list).
# [ first in ] ( first out ).
# Half Moon tonight (At least it is better than no Moon at all].
# A rope may form )( a trail in a maze.
# Help( I[m being held prisoner in a fortune cookie factory)].
# ([ (([( [ ] ) ( ) (( ))] )) ]).
# .
# .
# yes
# yes
# no
# no
# no
# yes
# yes
'공부하기 > 백준' 카테고리의 다른 글
[Python] 백준 풀기 25501 - 재귀의 귀재 (2) | 2022.09.23 |
---|---|
[Python] 백준 풀기 10870 - 피보나치 수 5 (0) | 2022.09.22 |
[Python] 백준 풀기 15652 - N과 M (4) (2) | 2022.09.21 |
[Python] 백준 풀기 15651 - N과 M (3) (0) | 2022.09.20 |
[Python] 백준 풀기 11866 - 요세푸스 문제 0 (0) | 2022.09.19 |