반응형
https://www.acmicpc.net/problem/1935
n = int(input())
postfix = input()
nums = [int(input()) for _ in range(n)]
stack = []
# 후위 표기식 계산
for p in postfix:
if 'A' <= p <= 'Z': # 피연산자인 경우
stack.append(nums[ord(p) - ord('A')])
else: # 연산자인 경우
b = stack.pop()
a = stack.pop()
if p == '+':
stack.append(a + b)
elif p == '-':
stack.append(a - b)
elif p == '*':
stack.append(a * b)
elif p == '/':
stack.append(a / b)
print('%.2f' % stack[0])
이 문제는 스택을 사용하는 문제이다.
1. 필요한 정보를 입력받고 스택을 생성한다.
2. 후위 표기식을 계산한다.
2-1. 피연산자인 경우 스택에 값을 삽입한다.
2-2. 연산자인 경우 스택에서 값을 가져와 계산한 후 그 값을 스택에 삽입한다.
3. 결과값을 소수점 둘째자리까지 출력한다.
반응형
'Algorithm > 백준' 카테고리의 다른 글
[백준/Python] 카드 (0) | 2021.10.13 |
---|---|
[백준/Python] 요세푸스 문제 0 (0) | 2021.10.10 |
[백준/Python] 괄호 (0) | 2021.10.06 |
[백준/Python] 듣보잡 (0) | 2021.10.06 |
[백준/Python] 숨바꼭질 6 (0) | 2021.10.05 |