코딩테스트/파이썬 알고리즘 문제풀이 입문
[파이썬 알고리즘 문제풀이 입문] 자료구조 활용 (스택, 큐, 해쉬, 힙) - 후위식 연산 (스택)
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다.
문제
후위연산식이 주어지면 연산한 결과를 출력하는 프로그램을 작성하세요.
풀이
• 내 풀이
import sys
input = sys.stdin.readline
e = input().rstrip()
stack = list()
for i in e:
if i.isdecimal():
stack.append(int(i))
else:
b = stack.pop()
a = stack.pop()
if i=='+':
value = a+b
elif i=='-':
value = a-b
elif i=='*':
value = a*b
else:
value = a/b
stack.append(value)
print(stack[0])
• 답안 : Python
import sys
input = sys.stdin.readline
e = input().rstrip()
stack = list()
for i in e:
if i.isdecimal():
stack.append(int(i))
else:
if i=='+':
a=stack.pop()
b=stack.pop()
stack.append(b+a)
elif i=='-':
a=stack.pop()
b=stack.pop()
stack.append(b-a)
elif i=='*':
a=stack.pop()
b=stack.pop()
stack.append(b*a)
elif i=='/':
a=stack.pop()
b=stack.pop()
stack.append(b/a)
print(stack[0])
- 구현한 로직은 비슷한데, 내 풀이가 답안의 코드에서 중복을 최대한 제거한 버전이라고 생각하면 될 것 같다.
- 오히려 후위표기식 만드는 것보다 쉽게 풀렸다.
(실제로 컴퓨터가 계산할 때, 후위식으로 계산하는 것이 더 빠르다고 하는데.. 이유를 알 것 같았다.)
반응형
댓글