수정할 것
일단 열린 괄호는 스택에 넣는다. '(' or '['
이후 아이디어가 떠오르지 않음 ㅠㅠ
구글링을 통해 해답 찾아봄
s = input()
stack = []
tmp = 1
res = 0
# for c in s를 하면 안 되고 길이로 돌아야 함
for i in range(len(s)):
if s[i] == '(':
tmp *= 2
stack.append(s[i])
elif s[i] == '[':
tmp *= 3
stack.append(s[i])
elif s[i] == ')':
if not stack or stack[-1] == '[':
res = 0
break
if s[i-1] == '(':
res += tmp
tmp //= 2
stack.pop() # pop도 까먹지 말고 꼭
else:
if not stack or stack[-1] == '(':
res = 0
break
# [()]의 경우 ] 직전 문자가 )이므로 더하지 않고 넘어감
# 단, 이 경우는 오류는 아님
if s[i-1] == '[':
res += tmp
tmp //= 3
stack.pop() # pop 까먹지 말기
if stack:
res = 0
print(res)