스택을 활용하는 문제이다. 괄호의 종류는 2개이므로 하나하나 검사해가며 풀면 된다. 이때 곱하기가 있으므로 (가 나오면 2를 해주고 [가 나오면 3을 해준다.
하나씩 스택에 넣어가며 검사하고 검사 중 짝이 되지 않는 경우는 0으로 만든뒤 반복문을 탈출하면 된다.
짝이 지어지는 경우에는 각 값을 더해가며 답을 구하면 된다.
import sys
from collections import deque
input = sys.stdin.readline
symbol = list(input().rstrip())
stack=[]
multy = 1
answer = 0
for i in range(len(symbol)):
if symbol[i] == "(":
stack.append(symbol[i])
multy *= 2
elif symbol[i] == "[":
stack.append(symbol[i])
multy *= 3
elif symbol[i] == ")":
if not stack or stack[-1] == "[":
answer = 0
break
if symbol[i-1] == "(":
answer += multy
stack.pop()
multy //=2
else:
if not stack or stack[-1] == "(":
answer = 0
break
if symbol[i-1] == "[":
answer += multy
stack.pop()
multy //= 3
if stack:
print(0)
else:
print(answer)