백준 python 기록

백준 파이썬 후위 표기식2

우히힝 2022. 4. 11. 22:37

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

 

1935번: 후위 표기식2

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

www.acmicpc.net

 

후위 표기식이 뭔지몰라서 조금 해맸는데 스택으로 간단히 해결하였습니다.

 

A,B,C는 아스키코드로 값을 변환해서 사용하면 되는거고

 

A B C * + 가 들어왔을 경우 우선 A,B,C를 전부 스텍에 저장

사칙연산이 들어왔다면 스택에서 값을 두개 빼내서 계산 -> 반복 후 출력을 하면 끝나는 문제입니다.

 

n = int(input())
s = input()

li = [0] * n

for i in range(n):
    li[i] = int(input())

stack = []

for i in s:
    if 'A' <= i <= 'Z':
        stack.append(li[ord(i) - ord('A')])
    else:
        p2 = stack.pop()
        p1 = stack.pop()

        if i == '+':
            stack.append(p1+p2)
        elif i == '-':
            stack.append(p1-p2)
        elif i == '*':
            stack.append(p1*p2)
        elif i == '/':
            stack.append(p1/p2)

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