알고리즘
[백준] 1935 후위 표기식2 [python, 실버3, 스택]
인지용
2026. 1. 15. 10:57
https://www.acmicpc.net/problem/1935
import sys
import operator
def input():
return sys.stdin.readline().strip()
n = int(input())
text = list(input())
stack = []
nums = []
ops = {
'+': operator.add,
'-': operator.sub,
'*': operator.mul,
'/': operator.truediv
}
for i in range(n):
nums.append(int(input()))
for i in text:
if i.isalpha():
index = ord(i) - ord('A')
stack.append(nums[index])
else:
a = stack.pop()
b = stack.pop()
stack.append(ops[i](b, a))
print("{:.2f}".format(stack.pop()))
입력이 문자열이면 스택에 넣다가
후위표기식이 나오면 스택 마지막 2개를 빼서 계산하고 결과를 다시 스택에 넣으면 된다.
핵심은 문자열과 숫자를 잘 매핑해놓고 재활용해서 계산하면 된다.
문자열이라고해서 신규 입력을 받으면 실패.. (내가 처음에 그랬음 ㅎ)