中尉
6365 ワード
"""
후위 표기식
https://www.acmicpc.net/problem/1918
"""
from collections import deque
priority = {
"*": 3,
"/": 3,
"+": 2,
"-": 2,
"(": 1
}
result = []
ostack = deque([])
data = deque(list(input()))
while data:
now = data.popleft()
if now.isalpha(): # 피연산자면 그대로 출력
result.append(now)
else:
if now == ")": # ) 이면 ( 가 나올 때까지 스택 pop
while ostack:
o = ostack.pop()
if o == "(":
break
if o != ")":
result.append(o)
elif now == "(": # ( 이면 스택에 push
ostack.append(now)
else: # 연산자면 스택에서 우선순위가 높거나 같은 것들 모두 pop
while ostack:
o = ostack.pop()
if priority[o] < priority[now]:
ostack.append(o)
break
result.append(o)
ostack.append(now) # 그리고 현재 연산자를 스택에 push
while ostack: # 스택에 남은 연산자 모두 pop
result.append(ostack.pop())
print("".join(result))
(
インスタントラーメンスタック)
インスタントラーメン(
スタックpop次に、現在の演算子をスタック
Reference
この問題について(中尉), 我々は、より多くの情報をここで見つけました https://velog.io/@guswns3371/중위-후위-표기법テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol