백준

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

초코바나나쉐이크 2023. 6. 10. 13:47

https://www.acmicpc.net/problem/4949

 

4949번: 균형잡힌 세상

각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에

www.acmicpc.net

문제를 보자마자 스택으로 푸는 문제라고 생각하여 바로 코드를 작성했다.

result=[]
while True:
    stack=[]
    word = list(input())
    btn=1
    if word[0] == '.':
        for i in result:
          print(i)
        exit()
    for i in word:
        #print(stack)
        if i == '(':
            #print("(추가")
            stack.append(i)
        elif i == '[':
            #print("[추가")
            stack.append(i)
        elif i == ')':
            if stack == []:
              btn=0
            elif stack[-1] != '(':
                btn=0
                #print("(없음")
            else:
                #print("(제거")
                stack.pop()
        elif i == ']':
            if stack == []:
              btn=0
            elif stack[-1] != '[':
                btn=0
                #print("[없음")
            else:
                #print("[제거")
                stack.pop()
    if btn==0 or stack!=[]:
        result.append("no")
    else:
        result.append("yes")
    #print(f"최종 스택:{stack}")
    #print(result)

성공~

엄청나게 오랜만에 풀어본 스택문제였다.