import re
from itertools import *
def solution(expression):
# 사용된 연산자 리스트 생성
operations = [i for i in expression if (i in ['+', '-', '*'])]
# 연산자의 순열 리스트 생성
permut = list(permutations(list(set(operations))))
# 초기값 = 0
answer = 0
# 순열 리스트마다 연산자별로 우선 계산하여 저장
for order in permut :
exp = expression
for operation in order :
# 계산할 구간 찾기
exs = re.compile('(?:(?:\(\-)?\d+\)?' + '\\' + operation + ')+(?:\(\-)?\d+\)?').findall(exp)
# 계산된 값으로 교체
for ex in exs :
x = eval(ex)
if x < 0 :
x = '(' + str(x) + ')'
else :
x = str(x)
exp = exp.replace(ex, x)
# 더 큰 값으로 변경
if answer < abs(eval(exp)):
answer = abs(eval(exp))
return answer
🧩 eval()
함수는 보안상 문제가 발생할 수도 있다고 한다. 되도록이면 사용하지 않는 방향으로 코드를 짜야겠다.