본문 바로가기

파이썬

[백준 파이썬] 2504번 괄호의 값

<문제>

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

 

2504번: 괄호의 값

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

www.acmicpc.net

 

<코드>

import sys
input = sys.stdin.readline
lst = input()

stack = []
result = 0
tmp = 1

for i in range(len(lst)):
    if lst[i] == '(':
        stack.append('(')
        tmp *= 2

    elif lst[i] == '[':
        stack.append('[')
        tmp *= 3

    elif lst[i] == ')':
        if not stack or stack[-1] == '[':
            result = 0
            break
        else:
            if lst[i-1] == '(':
                result += tmp
            stack.pop()
            tmp //= 2
            
    elif lst[i] == ']':
        if not stack or stack[-1] == '(':
            result = 0
            break
        else:
            if lst[i-1] == '[':
                result += tmp
            stack.pop()
            tmp //= 3
if stack:
    result = 0
print(result)

실버 1인데 어렵네요 ㅠㅠ