문제 : https://www.acmicpc.net/problem/1935
- 먼저 입력받은 피연산자의 개수만큼 operand 스택을 초기화
- 후위표기식을 입력받은 후 피연산자의 값을 operand 스택에 넣기
- 후위표기식을 순회
- 알파벳을 만날 경우 stack에 그 값을 넣기
- 연산자를 만날 경우 stack에서 값을 두개 씩 빼서 연산
- 소수점 둘째 자리까지 출력
import sys
n = int(sys.stdin.readline())
data = sys.stdin.readline().rstrip()
operand = [0] * n # 피연산자를 저장할 스택
stack = [] # 연산자를 저장할 스택
for i in range(n):
operand[i] = int(sys.stdin.readline()) # 피연산자값을 받는다
for i in data:
if('A' <= i <= 'Z'): # 후위표기식에서 알파벳을 만나면
stack.append(operand[ord(i)-ord('A')])
else: # 연산자를 만나면
str2 = stack.pop()
str1 = stack.pop()
if(i == '+'):
stack.append(str1+str2)
elif(i == '-'):
stack.append(str1-str2)
elif(i == '*'):
stack.append(str1*str2)
elif(i == '/'):
stack.append(str1/str2)
result = stack[0]
print(f'{result:.2f}')
if('A' <= i <= 'Z')
: 알파벳을 찾고 싶다면 이렇게..