코딩테스트/백준

백준(BAEKJOON) 1935 후위 표기식2 - Python

Moonsu99 2023. 11. 24. 21:18

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

 

1935번: 후위 표기식2

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

www.acmicpc.net

 

 

 

풀이

import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
que = deque() 
list = [] 

postfix = input().rstrip()  # rstrip써서 문자 없으면 오른쪽 공백제거, 있으면 문자열 제거


for _ in range(n): # 알파벳에 대응하는 값을 입력받아 리스트에 저장
    list.append(int(input()))

for str in postfix: # 입력받은 후위 표기법 수식을 한 문자씩 돌기
    if str.isalpha():  # 문자가 알파벳인 경우
        que.append(list[ord(str) - 65])  # 알파벳에 대응하는 값을 큐에 추가
    else:  # 문자가 연산자인 경우
        first = que.pop()
        second = que.pop()
        if str == '+':
            que.append(second + first)
        elif str == '-':
            que.append(second - first)
        elif str == '*':
            que.append(second * first)
        elif str == '/':
            que.append(second / first)

#소수점 둘째까지 출력
print("{:.2f}".format(que[0]))