목차
후위식 연산
후위연산식이 주어지면 연산한 결과를 출력하는 프로그램을 작성하세요.
만약 3*(5+2)-9 을 후위연산식으로 표현하면 352+*9- 로 표현되며 그 결과는 21입니다.
▣ 입력설명
첫 줄에 후위연산식이 주어집니다. 연산식의 길이는 50을 넘지 않습니다. 식은 1~9의 숫자와 +, -, *, /, (, ) 연산자로만 이루어진다.
▣ 출력설명
연산한 결과를 출력합니다.
▣ 입력예제 1
352+*9-
▣ 출력예제 1
12
나의 코드
arr=input()
stack=[]
for x in arr:
if x.isdecimal():
stack.append(int(x))
elif x =='+':
stack.append(stack.pop() + stack.pop())
elif x =='-':
temp=stack[-2] - stack[-1]
stack.pop()
stack.pop()
stack.append(temp)
elif x =='*':
stack.append(stack.pop() * stack.pop())
elif x =='/':
temp=stack[-2] / stack[-1]
stack.pop()
stack.pop()
stack.append(temp)
print(stack[0])
후위 연산식에는 (,)가 없어 그저 사칙 연산 기호들을 분기처리하여 계산을 진행
정답 코드
import sys
sys.stdin=open("input.txt", "r")
a=input()
stack=[]
for x in a:
if x.isdecimal():
stack.append(int(x))
else:
if x=='+':
n1=stack.pop()
n2=stack.pop()
stack.append(n2+n1)
elif x=='-':
n1=stack.pop()
n2=stack.pop()
stack.append(n2-n1)
elif x=='*':
n1=stack.pop()
n2=stack.pop()
stack.append(n2*n1)
elif x=='/':
n1=stack.pop()
n2=stack.pop()
stack.append(n2/n1)
print(stack[0])
나의 코드와 똑같다아 ~
'코딩테스트[파이썬] > 알고리즘 문제풀이 입문' 카테고리의 다른 글
[스택 & 큐] -응급실 (0) | 2024.02.09 |
---|---|
[스택 & 큐] -공주 구하기 (1) | 2024.02.09 |
[스택 & 큐] - 후위 표기식 (1) | 2024.02.09 |
[스택&큐] - 쇠막대기 (0) | 2024.02.08 |
[스택&큐] - 가장큰수 (0) | 2024.02.08 |