알고리즘/백준
[백준 / Python] 1935번 후위 표기식2 | 초코더
cloud_nice
2020. 1. 30. 14:58
https://www.acmicpc.net/problem/1935
1935번: 후위 표기식2
첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이는 100을 넘지 않는다) 그리고 셋째 줄부터 N+2번째 줄까지는 각 피연산자에 대응하는 값이 주어진다. (3번째 줄에는 A에 해당하는 값, 4번째 줄에는 B에 해당하는값 , 5번째 줄에는 C ...이 주어진다, 그리고 피연산자에 대응 하는 값은 정수이다)
www.acmicpc.net
나의 풀이
import sys
n=int(input())
str=input()
nums=[0]*n
for i in range(n):
nums[i]=int(input())
stack=[]
for ch in str:
#문자이면
if ch.isupper():
#nums[해당 문자의 아스키코드에 해당하는 index]
stack.append(nums[ord(ch)-ord('A')])
#연산자이면
else:
#뒤에 추가된 숫자먼저 빼오고
#이전에 추가된 숫자빼오기
num2=stack.pop()
num1=stack.pop()
if ch=='+':
stack.append(num1+num2)
elif ch=='-':
stack.append(num1-num2)
elif ch=='/':
stack.append(num1/num2)
elif ch=='*':
stack.append(num1*num2)
#소수점 두자리까지 출력하는 방법
print(f"{stack[0]:.2f}")