반응형
문제
설명
전형적인 스택 문제
(,[ 기호는 스택에 쌓아두고 ) ] 기호가 들어올때 짝 맞는지 확인해서 pop으로 제거해준다
조건에 맞지 않으면 그냥 스택에 쌓아서 마지막에 스택의 요소가 남아있다면 no를 출력해준다
코드
import sys
while True:
stk = []
sentence = sys.stdin.readline().rstrip()
if sentence == ".":
break
for char in sentence:
if char == "(" or char == "[":
stk.append(char)
elif char == "]":
if len(stk) != 0 and stk[-1] == "[":
stk.pop()
else:
stk.append(char)
elif char == ")":
if len(stk) != 0 and stk[-1] == "(":
stk.pop()
else:
stk.append(char)
if len(stk) == 0:
print("yes")
else:
print("no")
처음에
if len(stk) != 0 and stk[-1] == "[":
이 로직을 if 두개로 따로 짰다가 틀렸었다, 이런 오류는 찾기도 힘드니 항상 if를 쓸때는 조건에 맞지 않는 예시가 뭐가 있는지 잘 파악해야 한다
반응형
'PS > 스택(stack)' 카테고리의 다른 글
[백준 1874번 문제 파이썬(python)] [스택 수열] 문제가 이상한가 이해하기 어렵다 (0) | 2023.08.13 |
---|---|
[백준 10773번 문제 파이썬(python)] [제로] (0) | 2023.08.13 |
[백준 10828번 문제 스택 파이썬(python)] input()은 쓰지 말자 (0) | 2023.08.13 |