solution
1. 스택 이용
# 4949, 균형잡힌 세상
import sys
txt = [] # 문자열 입력
while True:
str = sys.stdin.readline().rstrip()
if str == '.':
break
txt.append(str)
ans = [] # yes, no 저장할 배열
for txt_ in txt:
check = 1 # 균형 잡힌 문자열이면 1
stack = []
for i in txt_:
if i == '(':
stack.append('(')
elif i == ')':
if len(stack) == 0 or stack[-1] != '(':
check = 0 # 균형 잡힌 문자열 X
break
else:
stack.pop()
elif i == '[':
stack.append('[')
elif i == ']':
if len(stack) == 0 or stack[-1] != '[':
check = 0 # 균형 잡힌 문자열 X
break
else:
stack.pop()
if len(stack) != 0 or check == 0: # 스택에 남은 괄호가 있거나 check가 0이면
ans.append('no')
else:
ans.append('yes')
for ans_ in ans:
print(ans_)
29380KB
108ms
if len(stack) != 0 or check == 0:
txt_ = 'no'
else:
txt_ = 'yes'
txt_ 변경 안 됨
문제 출처 https://www.acmicpc.net/problem/4949
'알고리즘 > 문자열 처리' 카테고리의 다른 글
자바 | 백준 | 12904 | A와 B | 문자열 뒤집기 (0) | 2021.04.30 |
---|---|
파이썬 | 백준 | 9935 | 문자열 폭발 (0) | 2020.12.23 |
파이썬 | 백준 | 1543 | 문서 검색 (0) | 2020.08.20 |
파이썬 | 백준 | 10546 | 배부른 마라토너 (0) | 2020.08.18 |