코테 대비 python/백준

복습 1935 후위 표기식2

ylab 2023. 4. 14. 15:02

https://www.acmicpc.net/problem/1935

 

1935번: 후위 표기식2

첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이

www.acmicpc.net

언제나 그렇듯 핵심은 자료구조를 사용하여 요구하는 것을 구현할 수 있는가??

사용한것 key-value

스택자료구조

출력시 f 사용 ==> 맨날까먹어ㅜㅜ

 

n=int(input())
a=list(input())
val=dict()
alpa="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
cal=[]
result=0
for i in range(n):
    val[alpa[i]]=int(input())

for i in a:
    if i in alpa:
      cal.append(val[i])
    elif i == "*":
        a=cal.pop()
        b=cal.pop()
        cal.append(b*a)

    elif i == "+":
        a = cal.pop()
        b = cal.pop()
        cal.append(b + a)


    elif i == "-":
        a = cal.pop()
        b = cal.pop()
        cal.append(b - a)

    elif i == "/":
        a = cal.pop()
        b = cal.pop()
        cal.append(b / a)


num=cal[0]
print(f"{num:.2f}")