[알고리즘] 백준 - 후위 표기식2

June·2021년 2월 14일
0

알고리즘

목록 보기
82/260

백준 - 후위 표기식2

내 풀이

from collections import deque
import sys

N = int(input())
equation = input()
alpha_nums = [0] * 26
stack = []


def calculate(a, b, op):
    if op == '+':
        return a + b
    elif op == '-':
        return a - b
    elif op == '*':
        return a * b
    elif op == '/':
        return a / b

for i in range(N):
    a = int(input())
    alpha_nums[i] = a

for char in equation:
    if char not in ['+', '-', '*', '/']:
        stack.append(alpha_nums[ord(char) - ord('A')])
    else:
        b = float(stack.pop())
        a = float(stack.pop())
        stack.append(calculate(a, b, char))

print("%.2f" % stack.pop())

후위표기식 ab+ 는 a+b로 계산된다.
123*+45/-
16+45/-
745/-
7 0.8 -
6.2
이런식으로 연산자를 만나면 앞의 두 피연산자 두 개를 가지고 연산을 하고 스택에 다시 넣으면된다.

0개의 댓글