인지용

[백준] 1935 후위 표기식2 [python, 실버3, 스택] 본문

알고리즘

[백준] 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개를 빼서 계산하고 결과를 다시 스택에 넣으면 된다.

 

핵심은 문자열과 숫자를 잘 매핑해놓고 재활용해서 계산하면 된다.

 

문자열이라고해서 신규 입력을 받으면 실패.. (내가 처음에 그랬음 ㅎ)