본문 바로가기
Data Science/알고리즘 공부

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

by titaniumm 2020. 3. 12.

[핵심]

스택을 활용한 괄호 검사 문제이다. 이전에 단순(())를 검사하는 문제와 거의 유사하지만

조금의 차이점이 있다.

"("와 "["를 구별해주어야 한다는 점이다. 또한 "(" 다음에 "]"가 아닌 ")" 오는지를 검사해주어야하는데 이를 비교하기 위해 change함수를 추가로 도입했다.

 

나중에 이런 유형의 문제에서 다양한 변수 혹은 기호가 쓰여도 check해주는 부분에

함수를 활용하면 될것같다.

def change(str):
    if str == "]":
        t = "["
        return t
    elif str == ")":
        return "("


while True:
    tmp = 0
    str = input()
    stack = []
    if str == ".":
        break
    lit = list(str)
    for i in lit:
        if i == "[" or i =="(":
            stack.append(i)
        elif i =="]" or i == ")":
            if len(stack)==0:
                print("no")
                tmp =1

                break
            check = stack.pop(-1)
            if check == change(i):
                continue
            else:
                tmp=1
                print("no")
                break
    if len(stack) ==0 and tmp ==0:
        print("yes")
    elif len(stack) != 0 and tmp ==0:
        print("no")

댓글