후위연산식이 주어지면 연산한 결과를 출력하는 프로그램을 작성
만약 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. 다시 풀어볼 필요 없을듯!!!! 우하하