📊알고리즘, 문제풀이/📈문제풀이 (PS)

[알고리즘][Python] 백준 1918 후위 표기식 문제 풀이

Written by Donghak Park

문제 출처 : www.acmicpc.net/problem/1918

 

1918번: 후위 표기식

첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식

www.acmicpc.net


문제 해석 : 중위 표현식을 후위 표현식으로 고치는 프로그램을 작성하는 문제이다.

 

문제 풀이 :  스택을 사용해서 각 상황에 맞게 행동을 해주면 된다. 후위 표현식을 만드는 방식을 문제에서 표현한 대로 하면 풀 수 있다. 다만 괄호가 있음에 유의해서 문제를 풀어야 한다.


풀이 코드

S = list(input())

answer = ""

op = []
alpha = []

while S:
    temp = S.pop(0)

    #알파벳일 경우
    if temp.isalpha():
        answer += temp

    else:
        if temp == "(":
            op.append(temp)

        elif temp == "*" or temp == "/":
            while op and (op[-1] == "*" or op[-1] == "/"):
                answer += op.pop()
            op.append(temp)

        elif temp == "+" or temp == "-":
            while op and op[-1] != "(":
                answer += op.pop()
            op.append(temp)

        elif temp == ")":
            while op and op[-1] != "(":
                answer += op.pop()
            op.pop()

while op:
    answer += op.pop()

print(answer)

author : donghak park
contact : donghark03@naver.com

## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.