새소식

인기 검색어

카테고리 없음

백준 1918문제

  • -

def prec(n):
    if (n == '(' or n == ')'):
        return 0
    elif (n == '+' or n == '-'):
        return 1
    elif (n == '*' or n == '/'):
        return 2


# 식 입력
calculation = input()

stack = []

for i in calculation:
    # 문자가 숫자이면
    if (i.isalnum()):
        print(i, end='')
    else:
        if (i == '+' or i == '-' or i == '*' or i == '/'):
            # 우선순위가 늪은 것이 스택 밑에 있다면 낮은거 있을 때까지 pop()
            while (stack != [] and prec(i) <= prec(stack[-1])):
                print(stack.pop(), end='')
            stack.append(i)

        elif (i == '('):
            stack.append(i)

        elif (i == ')'):
            k = stack.pop()
            while (k != '('):
                print(k, end='')
                k = stack.pop()

while (stack != []):
    print(stack.pop(), end='')

출처 : https://www.acmicpc.net/problem/1918

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.