코딩테스트 준비/[백준]

[백준] 1935번 - 후위표기식 2 파이썬

bled 2021. 5. 28. 20:37

https://www.acmicpc.net/problem/1935

 

1935번: 후위 표기식2

첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이

www.acmicpc.net

[코드]

import sys
N = int(sys.stdin.readline())
formula = sys.stdin.readline().strip()
d = dict()
for i in range(N):
    tmp = int(sys.stdin.readline())
    d[chr(i+65)] = tmp

stack = []
for f in formula:
    if f in d:
        stack.append(d[f])
    else:
        op2 = stack.pop()
        op1 = stack.pop()
        if f == '+':
            stack.append(op1 + op2)
        elif f == '-':
            stack.append(op1 - op2)
        elif f == '*':
            stack.append(op1 * op2)
        else:
            stack.append(op1 / op2)


print("%.2f" % stack[0])

 

[주의]

자꾸 인덱스 에러가떴는데 문제를 잘못이해해서 틀린 것이었다.

A = 1

B = 2

C = 3

...

이렇게 반드시 숫자값이 1부터 순차적으로 주어지는 줄 알았으나 그렇지 않았다.