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