+,-,*의 계산 우선 순위를 변경하여 최적의 값을 도출
https://programmers.co.kr/learn/courses/30/lessons/67257
Tips.
1. from itertools import permutations 사용
2. eval 사용
1시간 이상의 코딩 시간으로 fail..
-가 operation인지 음수를 뜻하는 기호인지 구분을 해야했는데, 다음에는 이 부분을 해결하면 좋겠음!
from itertools import permutations
import re
def number_list(expression):
expression = expression.replace('-',"+")
expression = expression.replace("*","+")
return expression.split('+')
def negativity(number_str):
if '@' in number_str:
return '-'+number_str[1:]
else:
return number_str
def solution(expression):
answer = 0
for opr_prit in list(permutations([opr for opr in ["+","-","*"] if opr in expression])):
new_exp = expression
for op in opr_prit:
while op in new_exp:
opr_list = [ne for ne in new_exp if ne in ["+","-","*"]]
n_list = number_list(new_exp)
op_idx = opr_list.index(op)
evaluation = eval(negativity(n_list[op_idx])+op+negativity(n_list[op_idx+1]))
str_eval = '@'+str(abs(evaluation)) if evaluation < 0 else str(evaluation)
del opr_list[op_idx]
del n_list[op_idx:op_idx+2]
n_list.insert(op_idx,str_eval)
new_exp = ''
for i in range(len(opr_list)):
new_exp += (n_list[i] + opr_list[i])
new_exp += n_list[-1]
answer = max(answer,abs(int(negativity(new_exp))))
return answer