https://www.acmicpc.net/problem/1935
import sys
from collections import deque
n = int(sys.stdin.readline())
notation = str(sys.stdin.readline().rstrip())
alphabet = {chr(x): 0 for x in range(ord("A"), ord("Z") + 1)}
for i in range(ord("A"), ord("A") + n):
alphabet[chr(i)] = int(sys.stdin.readline())
stack = deque()
for i in range(len(notation)):
if notation[i].isupper():
stack.append(alphabet[notation[i]])
else:
back = stack.pop() # 사칙연산 뒤에 오는 숫자
front = stack.pop() # 사칙연산 앞에 오는 숫자
if notation[i] == "+":
result = front + back
elif notation[i] == "-":
result = front - back
elif notation[i] == "*":
result = front * back
else:
result = front / back
stack.append(result)
print("{:.2f}".format(result))
ord() : 문자를 인자로 받으면 해당 문자에 해당하는 유니코드 정수를 반환
chr() : 정수를 인자로 받으면 해당 정수에 해당하는 유니코드 문자를 반환
문자열.isupper() : 문자열이 대문자인지 확인하여 boolean 반환
value값 0을 가진 알파벳 dictionary를 선언하고 입력값을 해당 알파벳의 value로 저장한다.
대문자일 경우 스택에 저장하고 아닐 경우 스택에서 값을 추출하여 사칙연산에 맞는 값을 계산한뒤 스택에 저장한다.