문제
- 처음 수식을 분리.
- deque로 만들기
- permutations를 이용하여 연산자 조합하기
- 큐를 이용하여 연산하기
- 분리했던 연산에서 해당하는 연산자가 나오면 s에 넣었던 가장 마지막 숫자와 현재 k 안에 있는 숫자를 연산해서 s에 넣는다.
from collections import deque
from itertools import permutations
import copy
def operator(a, b, op):
if op == '+':
return a + b
elif op == '-':
return a - b
else:
return a * b
def cal(k, op):
for o in op:
s = deque()
while k:
tmp = k.popleft()
if tmp == o:
s.append(operator(s.pop(), k.popleft(), o))
else:
s.append(tmp)
k = s
return abs(k[0])
def solution(expression):
result = 0
op = ['*', '-', '+']
a = list()
n = ''
for i in expression:
if i in op:
a.append(int(n))
a.append(i)
n = ''
else:
n += i
a.append(int(n))
a = deque(a)
for i in permutations(op, 3):
k = copy.deepcopy(a)
result = max(result, cal(k, i))
return result