[백준/파이썬] 1935번

민정·2023년 8월 8일
0

[백준/파이썬]

목록 보기
161/245
post-thumbnail

📍백준 1935번 문제

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

코드

import sys
from collections import deque

input = sys.stdin.readline

num = int(input())
li = list(map(str, input().rstrip('\n')))
num_li = [0] * num
temp = []

for i in range(num):
    num_li[i] = int(input())

for j in li:
    if j.isalpha():
        temp.append(num_li[ord(j)-ord('A')])
    else:
        b = temp.pop()
        a = temp.pop()
        if j == '+':
            temp.append(a + b)
        elif j == '-':
            temp.append(a - b)
        elif j == '*':
            temp.append(a * b)
        elif j == '/':
            temp.append(a / b)

print('%.2f' % temp[0])

풀이

후위표기식의 경우 사칙연산과 가장 가까운 두 수 또는 식이 피연산자가 된다.
만약 입력받은 값이 문자라면 입력 받은 값을 temp(stack)에 추가한다.
입력받은 값이 문자가 아닌 연산자라면 temp 뒤에 있는 두 값을 가지고 와 계산을 하면 된다.
또한 결과 값을 다시 temp에 추가하면 된다.

profile
パㅔバ6ㅇr 덤벼ㄹΓ :-0

0개의 댓글