from collections import deque
priority = []
def go(l, used):
global priority
if 3 == len(l):
priority.append(l)
return
for i in ['+', '-', '*']:
tmp = used[:]
if i not in used:
tmp += i
go(l + i, tmp)
def solution(expression):
answer = 0
global priority
go('', '')
start_index = 0
q = deque()
for i in range(len(expression)):
if expression[i] not in '0123456789':
q.append(int(expression[start_index:i]))
q.append(expression[i])
start_index = i+1
q.append(int(expression[start_index:]))
for p in priority:
nq = deque(q)
for i in p:
tmp = deque()
if len(nq) == 0:
continue
x = nq.popleft()
tmp.append(x)
while nq:
y = nq.popleft()
# 만약 맞는 사칙연산
if y == i:
z = nq.popleft()
w = tmp.pop()
if i == '+':
tmp.append(w+z)
elif i == '-':
tmp.append(w-z)
elif i == '*':
tmp.append(w*z)
# 사칙 연산 틀리거나 숫자이면
else:
tmp.append(y)
nq = tmp
a = nq.popleft()
answer = max(answer, abs(a))
return answer