반응형
스택의 본질에 집중하자
이전값을 저장하고, 연산 후 다시 저장하고의 반복이다.
틀린코드
s=input()
cur=0
stack=[]
res=0
plus=0
for x in range(len(s)):
if s[x]=="(":
if x!=0:
mul=int(s[x-1])
stack.append((plus-1,mul))
plus=0
elif s[x]==")":
p,m=stack.pop()
res=(res+plus)*m+p
plus=0
else:
plus+=1
print(res+plus)
이전의 결과값보다는 연산해야 하는 내용을 저장하려고 했고, 결론은 스택의 본질에 맞추지 못해서 꼬여버린 코드
s=input()
cur=0
stack=[]
for x in range(len(s)):
if s[x]=="(":
if x!=0:
mul=int(s[x-1])
stack.append((cur-1,mul))
cur=0
elif s[x]==")":
c,m=stack.pop()
cur=(m*cur)+c
else:
cur+=1
print(cur)
열심히 해야겠다.
반응형