接尾辞式の作成


作成日:2022年1月24日午後5:23

コード#コード#

# 후위표기식 만들기
import sys
sys.stdin = open("input.txt", "rt")
s = input()
stack = []
res = ''

for x in s:
    if x.isdecimal():
        res += x
    else:
        if x == '(':
            stack.append(x)
        elif x == '*' or x == '/':
            while stack and (stack[-1] == '*' or stack[-1] == '/'):
                res += stack.pop()
            stack.append(x)
        elif x == '+' or x == '-':
            while stack and stack[-1] != '(':
                res += stack.pop()
            stack.append(x)
        elif x == ')':
            while stack and stack[-1] != '(':
                res += stack.pop()
            stack.pop() # '(' 를 스택에서 제거

while stack:
    res += stack.pop()

print(res)
  • アイデア
  • res文字列に数値を直接追加し、演算子をスタックに入れます.
  • 演算優先度が
  • より高い場合、または同じ演算子がスタックにある場合、スタックからresを減算して追加します.
  • 」に遭遇すると、スタックは「」(「前」の演算子をポップアップし、resに追加します.
  • )
  • スタックの残りの演算子をresに追加します.