BOJ1935 후위표기식 2

수는 전부 다 넣고 스택에 넣고 연산자 인경우 스택에서 수 2개를 빼서 연산하고 스택에 다시 넣으면 풀리는 문제

import sys
input = sys.stdin.readline

N = int(input().strip())
elems = list(input().strip())
operands = [int(input().strip()) for _ in range(N)]

for i in range(len(elems)):
	if 'A' <= elems[i] <= 'Z':
		elems[i] = str(operands[ord(elems[i])-65])

st = []
for i in range(len(elems)):
	if elems[i].isdigit():
		st.append(int(elems[i]))
	else:
		b = float(st.pop())
		a = float(st.pop())
		if elems[i] == '+':
			st.append(str(a+b))
		elif elems[i] == '-':
			st.append(str(a-b))
		elif elems[i] == '*':
			st.append(str(a*b))
		elif elems[i] == '/':
			st.append(str(a/b))

print("%.2f"%(float(st.pop())))

좋은 웹페이지 즐겨찾기