문제 출처 (SILVER Ⅲ)
https://www.acmicpc.net/problem/15815
풀이
(a+(b*c))의 식이 abc*+ 식으로 변형되기 때문에
정수는 뒤에서부터 연산자는 앞에서부터 차례대로 계산하면 된다.
정수를 먼저 stack에 담아두고
연산자가 나왔을 시에는 pop을 2번 하여 나온 값들을
연산자에 맞춰 계산한 후 다시 stack에 담아주는 작업을 했다.
최종적으로 계산이 끝나면 stack에는 하나의 정수가 담기게 되니
stack의 0번째 인덱스를 출력하여 마무리했다.
코드
expression = input()
stack = []
for i in expression:
if i == "+":
stack.append(stack.pop() + stack.pop())
elif i == "-":
a, b = stack.pop(), stack.pop()
stack.append(b - a)
elif i == "*":
stack.append(stack.pop() * stack.pop())
elif i == "/":
a, b = stack.pop(), stack.pop()
stack.append(b / a)
else:
stack.append(int(i))
print(stack[0])
'ALGORITHM > PYTHON' 카테고리의 다른 글
백준 BAEKJOON 33950번 어게인 포닉스 [PYTHON/파이썬] (0) | 2025.07.08 |
---|---|
백준 BAEKJOON 33868번 스티커 나눠주기 [PYTHON/파이썬] (0) | 2025.07.06 |
백준 BAEKJOON 33845번 PNUPC에 한 번도 빠지지 않고 출연한 산지니가 새삼 대단하다고 느껴지네 [PYTHON/파이썬] (0) | 2025.06.12 |
백준 BAEKJOON 33990번 3대 512 [PYTHON/파이썬] (1) | 2025.06.02 |
백준 BAEKJOON 33963번 돈복사 [PYTHON/파이썬] (0) | 2025.06.01 |