
어떻게 풀어야 될지 생각을 못해 막막했다.
결국 답지를 보면서 이해 할 수 있었다.
- "("일땐 stack에 넣어주고 tmp * 2
- "["일땐 stack에 넣어주고 tmp * 3
- ")"일땐 먼저 stack의 마지막이 '('인지 체크 후 paren[i - 1]이 "("라면 ans += tmp 해주고 tmp = tmp // 2 그리고 stack.pop
- "]"일떈 먼저 stack의 마지막이 '['인지 체크 후 paren[i - 1]이 '['라면 ans += tmp 해주고 tmp = tmp // 3 후 stack.pop
tmp = 2 2 ans = 4
tmp = 2 3 3 ans = 4 + 18
tmp = 2 3 ans = 4 + 18 + 6 = 28
parens = list(input())
stack = []
ans = 0
tmp = 1
for i in range(len(parens)):
b = parens[i]
if b == "(":
tmp *= 2
stack.append(b)
elif b == "[":
tmp *= 3
stack.append(b)
elif b == ")":
if not stack or stack[-1] != "(":
ans = 0
break
if parens[i - 1] == "(":
ans += tmp
tmp = tmp // 2
stack.pop()
elif b == "]":
if not stack or stack[-1] != "[":
ans = 0
break
if stack[-1] == "[" and parens[i - 1] == "[":
ans += tmp
tmp = tmp // 3
stack.pop()
if stack:
ans = 0
print(ans)