https://www.acmicpc.net/problem/4949
풀이
스택기능을 이용하여 문제를 풀어주면 됩니다.
덱(deque)을 이용하여 스택 기능을 구현해주었으며, 문자열에 "[" 혹은 "("가 들어올 경우 덱에 추가해줍니다.
그 이후에 "]" 혹은 ")"가 들어오면 스택에 마지막으로 들어간 문자가 대칭되는 문자가 존재하는지 확인하는 방법으로 문제를 풉니다.
# 4949번 균형잡힌 세상
import sys
from collections import deque
def solve():
for i in words:
if i == "[" or i == "(":
queue.append(i)
elif i == "]":
if queue and queue[-1] == "[":
queue.pop()
else:
return "no"
elif i == ")":
if queue and queue[-1] == "(":
queue.pop()
else:
return "no"
# 주어진 문자열에 대한 탐색이 끝났는데도 덱에 "("나 "["가 남아있다면
# 대칭된 문자가 존재하지 않는다는 것이다.
if len(queue) == 0:
return "yes"
else:
return "no"
while True:
words = sys.stdin.readline().rstrip()
if words == ".":
break
queue = deque([])
print(solve())
출력결과
'백준 > 구현' 카테고리의 다른 글
[백준] 13211번 Passport Checking - 파이썬 (0) | 2022.08.30 |
---|---|
[백준] 18870번 좌표 압축 - 파이썬 (0) | 2022.08.19 |
[백준] 5430번 AC - 파이썬 (0) | 2022.08.16 |
[백준] 7568번 덩치 - 파이썬 (0) | 2022.08.16 |
[백준] 2231번 분해합 - 파이썬 (0) | 2022.08.16 |