문자열의 현재가 닫는 괄호이고 이전 괄호의 값이 짝이 맞는 닫는 괄호라면 그때 tmp의 값을 더해준다.
import sys
input = sys.stdin.readline
blocks = input().strip()
st = []
ans = 0
tmp = 1
for i in range(len(blocks)):
if blocks[i] in '([':
if blocks[i] == '(':
tmp *= 2
else:
tmp *= 3
st.append(blocks[i])
continue
if st:
if st[-1] == '(':
if blocks[i] == ')':
# 여기가 blocks[i-1]인 것이 중요
if blocks[i-1] == '(':
ans += tmp
st.pop()
tmp //= 2
else:
print(0)
sys.exit()
elif st[-1] == '[':
if blocks[i] == ']':
# 여기가 blocks[i-1]인 것이 중요
if blocks[i-1] == '[':
ans += tmp
st.pop()
tmp //= 3
else:
print(0)
sys.exit()
else:
if blocks[i] in ')]':
print(0)
sys.exit()
if st:
print(0)
else:
print(ans)