[백준 1918번] 후위 표기식

박형진·2022년 3월 26일
0

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


1. 코드

import sys
exp = sys.stdin.readline().rstrip()
priority = {
    '(': -1,
    '+': 0,
    '-': 0,
    '*': 1,
    '/': 1
}
ans = ''
op = []
for char in exp:
    if char.isalpha():
        ans += char
        continue

    if char == '(':
        op.append(char)
    elif char == ')':
        while op[-1] != '(':
            ans += op.pop()
        op.pop()
    else:
        while op and priority[op[-1]] >= priority[char]:
            ans += op.pop()
        op.append(char)
while op:
    ans += op.pop()
print(ans)

2. 후기

문제 설명처럼 가로를 직접 만들어서 구현해보려다가 답이 안나와서 풀이를 참고했다. 딕셔너리 자료형을 사용하여 연산자의 우선순위를 설정하는 방법인데 가장 깔끔한 풀이같다.
풀이 참조

profile
안녕하세요!

0개의 댓글