중위 to 후위 표기법

JaeGu Jeong·2023년 4월 22일
0

BOJ

목록 보기
8/8

중위를 후위로 바꾸기 흐름

스택을 활용하여 연산자를 처리한다. 중위식을 하나씩 읽어서 1. 피연산자이면 반환할 문자열에 바로 합친다.
2. 연산자 +또는-를 읽으면 기존스택에 쌓았던 '('직전까지 반환문자열에 저장하고 +-를 스택에 저장한다.
3. 곱셉또는 나누기를 만나면 기존스택에 꼭대기부터 차례대로 곱셉과 나눗셈을 모두 반환문자에 합친다. 만약 그외의 것을 만나면 반복을 중단하고 */을 스택에 저장한다.
4. 열린 소괄호를 만나면 바로 스택에 저장한다.
5. 닫힌 소괄호를 만나면 열린소괄호를 스택에서 pop할 때까지 모두 반환문자열에 합친다.

마지막으로 중위식에 위 조건을 모두 반복하고 남은 스택은 뒤집어서 반환문자열에 합친다.

answer = ""
op = []

for i in input():
    if i in "+-":
        while op and op[-1] != '(':
            answer += op.pop()
        op.append(i)
    elif i in "*/":
        while op and op[-1] in "*/":
            answer += op.pop()
        op.append(i)
    elif i == '(':
        op.append(i)
    elif i == ')':
        while op and op[-1] != '(':
            answer += op.pop()
        op.pop()
    else:
        answer += i

print(answer + "".join(op[::-1]))
profile
BackEnd Developer

0개의 댓글