공부 자료/알고리즘
(Python/파이썬) 백준 15815번 - 천재 수학자 성필
뚜루뚜루세니
2021. 8. 19. 10:07
728x90
문제출처: https://www.acmicpc.net/problem/15815
15815번: 천재 수학자 성필
길이가 100이 넘지 않는 수식이 예제 입력과 같이 공백 없이 입력된다. 수식은 0부터 9까지의 숫자와 연산자 '+', '-', '*', '/' 로만 이루어져 있다. 또한, 수식의 계산 중간 과정의 모든 결과는 항상 2
www.acmicpc.net
1. 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
from collections import deque
s = input()
d = deque()
for i in range(len(s)):
try:
d.append(int(s[i]))
except:
if s[i] =='+':
ans = (d.pop()+d.pop())
elif s[i] =='-':
op1 = d.pop()
op2 = d.pop()
ans =(op2-op1)
elif s[i] == '*':
ans = d.pop()*d.pop()
elif s[i] =='/':
op1 = d.pop()
op2 = d.pop()
ans = op2 //op1
d.append(ans)
print(d.pop())
|
cs |
2. 해결과정
후위연산식을 보고 값을 계산한 결과를 출력해주는 문제이다.
deque를 이용해서 문제를 풀어주었다.
값을 덱에 입력해주고 문자인 경우에 수를 빼내서 계산하고 다시 계산 결과를 덱에 append해주고 반복하면 된다.
3. 느낀점
기본적인 스택에 대한 개념을 익힐 수 있는 문제였던 것 같다.
728x90