[アルゴリズム/標準]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='')
Reference
この問題について([アルゴリズム/標準]1918:接尾辞式(python)), 我々は、より多くの情報をここで見つけました https://velog.io/@y7y1h13/알고리즘백준-1918-후위-표기식pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol