[구현] 2020 카카오 인턴십 - 수식 최대화
포인트
- 숫자와 연산자를 각각 리스트로 분리하고 각각 요소를 인덱스로 접근
- 리스트 요소를 변경한 후에 다음 턴에서 인덱스를 지정할 때 영향이 가는 것을 고려해서 아이템 변경 후 삭제
코드
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)
참고
Author And Source
이 문제에 관하여([구현] 2020 카카오 인턴십 - 수식 최대화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ann9902/구현-2020-카카오-인턴십-수식-최대화저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)