[백준/파이썬] 1918번 후위 표기식 풀이

업데이트:



문제 정보


풀이

문제

중위 표기식(괄호 포함)을 후위 표기식으로 변환하는 문제입니다.

코드

postfix,stack,f="",[],{'+':1,'-':1,'*':2,'/':2,'(':0}
for c in list(input()):
    if ord('A')<=ord(c)<=ord('Z'):postfix+=c
    else:
        if c==')':
            while True:
                t=stack.pop()
                if t=='(':break
                postfix+=t
        elif not stack:stack.append(c)
        elif c=='('or f[c]>f[stack[-1]]:stack.append(c)
        else:
            while True:
                postfix+=stack.pop()
                if not stack or f[c]>f[stack[-1]]:break
            stack.append(c)
print(postfix+''.join(stack[::-1]))

설명

피연산자는 바로 출력 문자열에 붙이고, 연산자는 우선순위와 괄호 규칙에 따라 스택에서 pop/push합니다.

입력 처리 후 스택에 남은 연산자를 뒤에서부터 붙여 최종 후위 표기식을 만듭니다.



댓글남기기