문제
포인트
- 숫자와 연산자를 각각 리스트로 분리하고 각각 요소를 인덱스로 접근
- 리스트 요소를 변경한 후에 다음 턴에서 인덱스를 지정할 때 영향이 가는 것을 고려해서 아이템 변경 후 삭제
코드
import re
from itertools import permutations
import copy
def solution(expression):
answer = []
origin_numbers = re.split('[*+-]', expression)
origin_operators = re.split('[0-9]+', expression)[1:-1]
unq_op = list(set(origin_operators))
comb = list(permutations(unq_op))
for case in comb:
numbers = copy.deepcopy(origin_numbers)
operators = copy.deepcopy(origin_operators)
for op in case:
while op in operators:
idx = operators.index(op)
new = eval(str(numbers[idx])+op+str(numbers[idx+1]))
numbers[idx] = new
del operators[idx]
del numbers[idx+1]
answer.append(abs(numbers[0]))
return max(answer)
참고
1