[Programmers] - 수식 최대화 (Level 2)


2020 KAKAO 인턴십
LEVEL : 2
문제링크

Tip:

  • 정규표현식을 이용하여 풀이를 해보려 했지만, sub에서 replace하는 과정에서 여러 오류가 생겨서 포기 (음수값 대입 등)
  • list split을 잘 활용하여 차순위 연산자부터 계산 후 병합하는 방식으로 충분히 풀이 가능
  • Complex is better than complicated..
expression = "100-200*300-500+20"
def solution(expression):

    from itertools import permutations
    priority = [i for i in permutations(["+","-","*"])]

    answer = []
    for i in priority:
        first = expression.split(i[0])
        second = [t.split(i[1]) for t in first]

        eval_third = []
        for s in second:
            tmp = [str(eval(t)) for t in s]
            eval_third.append(i[1].join(tmp))
        eval_second = [str(eval(t)) for t in eval_third]       
        answer.append(abs(eval(i[0].join(eval_second))))

    return max(answer)
solution(expression)
60420

Comments