반응형
생각보다 어려웠던 문제
결국은 풀긴했는데 매우 찝찝하게 풀었다.
l=input()
stack=[]
res=0
tmp=1
for x in range(len(l)):
if l[x]=="(":
tmp*=2
stack.append(l[x])
elif l[x]=="[":
tmp*=3
stack.append(l[x])
elif l[x]==")":
if stack and stack.pop()=='(':
if l[x-1]=='(':
res+=tmp
tmp=tmp//2
else:
print("0")
exit()
elif l[x]=="]":
if stack and stack.pop()=='[':
if l[x-1]=='[':
res+=tmp
tmp=tmp//3
else:
print("0")
exit()
if stack:
print("0")
else:
print(res)
tmp라는 현재 값을 통해서 곱하기를 해결해준다.
연속된 괄호를 만나면 곱해진다. 그리고 그 괄호가 제대로 닫히면 나누어서 괄호값을 빠져나가 준다.
괄호가 닫혔을때, 그 앞의 값이 열린괄호일때만 값을 더해준다.
연산자를 따로 스택에 담아서 해결해보려고 했지만 쉽지 않았다.
반응형