본문 바로가기
알고리즘/자료구조

[백준][Python] 2504번 괄호의 값

by 임짠짠 2022. 2. 10.
반응형
 

2504번: 괄호의 값

4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다.  만일

www.acmicpc.net

 

코드

inp = list(input())
stack = []
error = 1 
for i in inp:
    if i == "(":
        stack.append(i)
        cnt = 0         # 괄호가 ()와 같이 연속으로 나오는지 확인하는 변수
    elif i == ")":
        num = 0
        while len(stack) != 0:
            a = stack.pop()
            if a == "(":
                if cnt == 0:  # ()인 상황
                    stack.append(2)
                    cnt = 1
                    error = 0   
                else:
                    stack.append(num * 2)
                    cnt = 1
                    error = 0
                break    
            elif a == '[':
                print(0)
                exit(0)
            else:   # 숫자이면        
                num += a
                error = 1
        if error == 1:
            print(0)
            exit(0)
    elif i == "[":
        stack.append(i)
        cnt = 0
    elif i == "]":
        num = 0
        while len(stack) != 0:
            
            a = stack.pop()
            if a == "[":
                if cnt == 0:  # ()인 상황
                    stack.append(3)
                    cnt = 1
                else:
                    stack.append(num * 3)
                    cnt = 1
                error = 0
                break    
            elif a == '(':
                print(0)
                exit(0)
            else:   # 숫자이면
                num += a
                error = 1
                
        if error == 1:
            print(0)
            exit(0)    
answer = 0   
for i in stack:
    if i == "(" or i == "[":
        print(0)
        exit(0)
    else:
        answer += i
print(answer)

반례가 너무 많아서 힘들었다..

 

오류났던 예시들..

( 
) 
())[]
]()
반응형

댓글