728x90
https://www.acmicpc.net/problem/15815
import sys
string = sys.stdin.readline().rstrip()
stack = []
for i in range(len(string)):
if string[i].isdigit(): #1
stack.append(string[i])
else: #2
if stack:
n2 = int(stack.pop())
n1 = int(stack.pop())
if string[i] == '+':
stack.append(n1+n2)
elif string[i] == '-':
stack.append(n1-n2)
elif string[i] == '*':
stack.append(n1*n2)
elif string[i] == '/':
stack.append(n1//n2)
print(stack[-1]) #3
#1 : 숫자면 stack에 삽입
#2 : 숫자가 아니면 연산자, stack이 채워져 있을때 (후위표기식이 정상적으로 입력된다면 최소한 stack안의 원소는 2개 이상 있을것) n2와 n1을 꺼내어 +, -, *, / 연산을 해준다.
마지막 / 연산은 정수만 나올 수 있다고 했으니까 파이썬 연산자 //를 사용
#3 : 결국 마지막에 남는건 결과값 1개일테니까 stack의 top을 출력
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 2075 파이썬(python) : N번째 큰 수 - heapq (0) | 2022.07.25 |
---|---|
[백준] 1417 파이썬(python) : 국회의원 선거 (0) | 2022.07.25 |
[백준] 2257 파이썬(python) : 화학식량 (0) | 2022.07.25 |
[백준] 17952 파이썬(python) : 과제는 끝나지 않아! (0) | 2022.07.24 |
[백준] 11899 파이썬(python) : 괄호 끼워넣기 - 필요한 괄호 개수 세기 (0) | 2022.07.24 |