728x90
반응형
https://www.acmicpc.net/problem/1935
문제 해결
- 후위 표기식에 대해 이해를 먼저 해야한다. ( ex) ABC*+DE/- => A(B*C)+DE/- => (A+(B*C))DE/- =>(A+(B*C))(D/E)- => (A+(B*C))-(D/E)
- A, B, C .. 알파벳에 숫자 대입을 어떻게 할 것인가? (ord(spell) 이용!)
- 무조건 소수 둘째자리까지 출력 print("{:.2f}".format(stack.pop()))
CODE
import sys
input = sys.stdin.readline
n = int(input())
cal = str(input().strip())
num_lst = [0]*n # 피연산자값을 저장하기 위한
for i in range(n):
num_lst[i] = int(input()) # 피연산자값을 저장하기 위한
stack =[]
for spell in cal:
if 'A' <= spell <= 'Z':
stack.append(num_lst[ord(spell)-ord('A')])
else:
y = stack.pop()
x = stack.pop()
if spell =='+':
stack.append(x+y)
elif spell =='-':
stack.append(x-y)
elif spell == '*':
stack.append(x*y)
elif spell =='/':
stack.append(x/y)
print("{:.2f}".format(stack.pop()))
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[Python] 백준 10820 문자열 분석 (0) | 2022.12.16 |
---|---|
[Python] 백준 1918 후위 표기식 (0) | 2022.12.15 |
[Python] 백준 17413 단어 뒤집기2 (0) | 2022.12.14 |
[Python] 백준 1717 집합의 표현 (0) | 2022.12.13 |
[Python] 백준 1406 에디터 (0) | 2022.12.12 |
댓글