후위연산식이 주어지면 연산한 결과를 출력하는 프로그램을 작성하세요.
만약 3(5+2)-9 을 후위연산식으로 표현하면 352+9- 로 표현되며 그 결과는 21입니다.
▣ 입력설명
첫 줄에 후위연산식이 주어집니다. 연산식의 길이는 50을 넘지 않습니다.
식은 1~9의 숫자와 +, -, , /, (, ) 연산자로만 이루어진다.
▣ 출력설명
연산한 결과를 출력합니다.
▣ 입력예제 1
352+9-
▣ 출력예제 1
12
n=input()
stack=[]
res=[]
for i in range(len(n)) :
if n[i].isdecimal()==False:
res.append(stack.pop(-1))
res.append(n[i])
res.append(stack.pop(-2))
for i in res: #이 res에서 [2, '+', 3] 를 계산해주는 방법을 모르겠다
stack.append(res[0])
else :
#숫자 만나면 무조건 stack으로
stack.append(int(n[i])) #int도 다 잘 처리해줌
n=input()
stack=[]
for i in range(len(n)) :
if n[i].isdecimal()==False:
if n[i]=='+' :
k=stack.pop(-2) + stack.pop(-1)
elif n[i]=='-' :
k=stack.pop(-2) - stack.pop(-1)
elif n[i]=='*' :
k=stack.pop(-2) * stack.pop(-1)
elif n[i]=='/' :
k=stack.pop(-2) / stack.pop(-1)
stack.append(k)
else :
stack.append(int(n[i]))
print(stack[0])
n=input()
stack=[]
for i in range(len(n)) :
if n[i].isdecimal()==False:
if n[i]=='+' :
n1=stack.pop()
n2=stack.pop()
stack.append(n2+n1)
elif n[i]=='-' :
n1=stack.pop()
n2=stack.pop()
stack.append(n2-n1)
elif n[i]=='*' :
n1=stack.pop()
n2=stack.pop()
stack.append(n2*n1)
elif n[i]=='/' :
n1=stack.pop()
n2=stack.pop()
stack.append(n2/n1)
else :
stack.append(int(n[i]))
print(stack[0])
lst=input()
stk=[]
res=''
for i in lst:
if i.isdecimal():
stk.append(i)
else:
res=eval(stk.pop(-2)+i+stk.pop())
stk.append(str(res))
print(res)