코테 대비 python/백준

2504 괄호의 값 - 스택

ylab 2023. 2. 12. 08:31

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

 

2504번: 괄호의 값

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

www.acmicpc.net

s = list(input())
stack = [] 
res = 1 
result = 0 


# 1~4번째 과정 시작
for i in range(len(s)):
  if s[i]=='(':
    res *= 2
    stack.append(s[i])
    
  elif s[i]=='[':
    res *= 3
    stack.append(s[i])
    
  elif s[i]==')':
    if not stack or stack[-1]!='(':
      result = 0
      break
    if s[i-1]=='(': 
        result += res
    res //= 2
    stack.pop()
    
  elif s[i]==']':
    if not stack or stack[-1]!='[':
      result = 0
      break
    if s[i-1]=='[': 
        result += res
    res //= 3
    stack.pop()



if stack:
  print(0)
else:
  print(result)