할 줄 몰라서 선생님 코드를 바로 봤다.
import sys
sys.stdin = open("input.txt", "rt")
a = input()
stack = []
res = ''
for x in a:
if x.isdecimal():
res += x # str에 누적
else:
if x=='(': #여는 괄호는 무조건 누적
stack.append(x)
elif x=='*' or x =='/': #곱하기 또는 나누기 경우 본인보다 높은 우선순위 연산자만 꺼낸다.
while stack and (stack[-1]=='*' or stack[-1] =='/'): # 스택이 비어있지 않고 연산 우선순위가 같은것을 먼저 처리한다.
res += stack.pop()
stack.append(x) # 현재 * 나 / 를 추가한다.
elif x=='+' or x =='-': # 스택에 있는것은 자기보다 다 빠르거나 같다. 따라서 여는 괄호 전까지 끄집어 낸다.
while stack and stack [-1] != '(': # 괄호 안의 더하기 빼기를 만난 것이다.
res += stack.pop() #거의 무조건 넣어주는 식...
stack.append(x)
elif x == ')':
while stack and stack[-1] != '(':
res += stack.pop()
stack.pop()
while stack:
res += stack.pop()
print(res)
이건 어려워서 나중에 다시 해봐야 될듯 하다..