본문 바로가기

알고리즘 설계/내가 보려고 정리하는 문풀

후위식 연산

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

만약 3*(5+2)-9 을 후위연산식으로 표현하면 352+*9- 로 표현되며, 그 결과는 21

 

입력예시)

352+*9-

 

출력예시)

12


내가 쓴 코드

import sys
#sys.stdin = open("input.txt", 'rt')

s = input()
stack = []

#입력 문자열 순차적으로 접근
#숫자 만나면 stack에 넣기
#연산자 만나면 stack에서 두개 꺼내서 연산하고 결과 stack에 넣기
#결과는 마지막 stack에 남은 숫자

for x in s:
    if x.isdecimal():
        stack.append(int(x))
    else:
        x1 = stack.pop()
        x2 = stack.pop()
        if x == '+':
            stack.append(x2 + x1)
        elif x == '-':
            stack.append(x2 - x1)
        elif x == '*':
            stack.append(x2 * x1)
        elif x == '/':
            stack.append(x2 / x1)


print(stack.pop())

 

모범답안

#모범답안
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])

 


 

느낀점

1. 완저니 잘했당.ㅋ 모범 답안에서 pop하는거 굳이 똑같은 코드 네번 쓸 바에는
내가 더 효율적인 코드가 아닌가?!!! 우하핫 
증말 쉬운 문제지만 어쨋든 넘 잘 풀어서 기분이 좋당.

2. 다시 풀어볼 필요 없을듯!!!! 우하하

'알고리즘 설계 > 내가 보려고 정리하는 문풀' 카테고리의 다른 글

응급실  (2) 2024.11.23
공주 구하기  (2) 2024.11.22
후위표기식 만들기  (1) 2024.11.20
쇠막대기  (0) 2024.11.19
가장 큰 수  (0) 2024.11.18