[実施]2020 KACA実習-公式最大化

5329 ワード

質問する

せきぶん

  • の数値と演算子を1つのリストに分離し、各要素をインデックスとして
  • にアクセスします.
  • リスト要素を変更して次のラウンドでインデックスを指定した場合の影響を考慮すると、項目を変更して
  • を削除します.

    コード#コード#

    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