Part4.3_자료구조(스택,큐,해쉬,힙)_후위 표기식 만들기

Eugenius1st·2022년 1월 17일
0

Python_algorithm

목록 보기
19/83

후위 표기식 만들기

할 줄 몰라서 선생님 코드를 바로 봤다.

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)
        

이건 어려워서 나중에 다시 해봐야 될듯 하다..

profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글