"""
후위 표기식
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 == ")":
while ostack:
o = ostack.pop()
if o == "(":
break
if o != ")":
result.append(o)
elif now == "(":
ostack.append(now)
else:
while ostack:
o = ostack.pop()
if priority[o] < priority[now]:
ostack.append(o)
break
result.append(o)
ostack.append(now)
while ostack:
result.append(ostack.pop())
print("".join(result))
- 피연산자이면 그대로 출력
(
라면 스택에 push
)
라면 (
가 나올 때까지 스택 pop
- 연산자이면 스택에서 현재 연산자의 우선순위보다 크거나 같은 것들을 모두 pop
그리고 현재 연산자를 스택에 push