여는것과 닫는것의 스택 순서가 안맞아서 실패
import collections
import heapq
import sys
check = {
")": "(",
"]": "["
}
while True:
str_input = sys.stdin.readline().strip()
if str_input == ".":
break
# 괄호들만 스택에 저장하고
# 여는 스택, 닫는 스택 이렇게 저장해야지
# 일단 개수가 안맞으면 실패
# 닫는 스택에서 여는 스택 안맞으면 실패
open_stack = []
close_stack = []
result = "yes"
for i, s in enumerate(str_input):
# 여는것만
if s == "(" or s == "[":
heapq.heappush(open_stack, (i, s))
# 닫는것만
elif s == ")" or s == "]" in s:
heapq.heappush(close_stack, (i, s))
# 개수가 안맞아서 실패
if len(open_stack) != len(close_stack):
result = "no"
while close_stack:
str_close = heapq.heappop(close_stack)
str_open = heapq.heappop(open_stack)
# 닫는게 여는거랑 안맞을 시
if check[str_close[1]] != str_open[1]:
result = "no"
print(result)
해답을 확인 했습니다....
백준 4949번 균형잡힌 세상 - Python
https://www.acmicpc.net/problem/4949입력된 문장에 소괄호("()")와 대괄호 ("\[]")가 균형이 잘 맞는지 yes or no 로 출력하는 문제이다.이번 문제에서는 스택을 사용하면 된다.역시 개념을 모를 땐, 구글링과
velog.io
'개발 > 알고리즘' 카테고리의 다른 글
백준 1874번 스택 수열 (0) | 2024.01.22 |
---|---|
백준 11279번 최대 힙 (0) | 2024.01.17 |
백준 1021번 회전하는 큐 (0) | 2024.01.16 |
백준 9012번 괄호 (0) | 2024.01.10 |
백준 1011번 Fly me to the Alpha Centauri (1) | 2024.01.05 |