Lumpy Space Princess - Adventure Time
코딩테스트/파이썬 알고리즘 문제풀이 입문

[파이썬 알고리즘 문제풀이 입문] 자료구조 활용 (스택, 큐, 해쉬, 힙) - 후위식 연산 (스택)

yaebb_82 2023. 5. 18.

*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다.

 

 

 

문제

후위연산식이 주어지면 연산한 결과를 출력하는 프로그램을 작성하세요.

 

 

 

풀이

• 내 풀이

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])

- 구현한 로직은 비슷한데, 내 풀이가 답안의 코드에서 중복을 최대한 제거한 버전이라고 생각하면 될 것 같다.

- 오히려 후위표기식 만드는 것보다 쉽게 풀렸다.

   (실제로 컴퓨터가 계산할 때, 후위식으로 계산하는 것이 더 빠르다고 하는데.. 이유를 알 것 같았다.)

 

 

 

반응형

댓글