[アルゴリズム/標準]1918:接尾辞式(python)



後ろのマーク式2より少し難しいです.
かっこが一番現れにくい.左かっこを盾に解くと簡単です.括弧の前に入れる記号は、括弧がある限り順位が下がり続けます.
a = input()
stack = []
ans = []
for i in a:
    if i.isalpha():
        ans.append(i)
    else:
        if i == '(':
            stack.append(i)
        elif i == '*' or i == '/':
            while stack and (stack[-1] == '*' or stack[-1] == '/'):
                ans.append(stack.pop())
            stack.append(i)
        elif i == '+' or i == '-':
            while stack and stack[-1] != '(':
                ans.append(stack.pop())
            stack.append(i)
        elif i == ')':
            while stack and stack[-1] != '(':
                ans.append(stack.pop())
            stack.pop()
while stack:
    ans.append(stack.pop())
print(*ans, sep='')