문제📖
풀이🙏
- 후위 표기식 특성상 alphabet이 아닌 연산자가 나올 경우 stack에서 숫자를 꺼내 연산자에 따라 연산을 진행하고 그 결과를 다시 stack에 push한다.
- alphabet이 나올 경우 stack에 그 alphabet을 push한다.
- input()이후 A,B,C값을 입력한 숫자로 변환해주기 위해서 각 값을 num리스트에 저장하고 input에서 알파벳이 나오면 알파벳을 아스키코드값으로 변환하고 시작 알파벳인 A의 아스키코드 값을 빼서 num 리스트를 이용하여 값을 찾아내어 stack에 push한다.
코드💻
import sys
input = sys.stdin.readline
stack = []
n = int(input())
s = list(input().rstrip())
num = [0] * n
for i in range(n):
num[i] = int(input())
for i in s:
if i.isalpha():
stack.append(num[ord(i)-ord('A')])
else:
x = stack.pop()
y = stack.pop()
if i == "+":
stack.append(y+x)
elif i == "*":
stack.append(y*x)
elif i == "-":
stack.append(y-x)
elif i == "/":
stack.append(y/x)
print(format(stack[0],".2f"))