PS/스택(stack)

[백준 파이썬(python) 4949번 문제] [균형잡힌 세상]

이거시원조랑께 2023. 8. 17. 15:58
반응형

문제

설명

전형적인 스택 문제

(,[ 기호는 스택에 쌓아두고 ) ] 기호가 들어올때 짝 맞는지 확인해서 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를 쓸때는 조건에 맞지 않는 예시가 뭐가 있는지 잘 파악해야 한다

반응형