[Python][프로그래머스][Level2] 수식 최대화

[Python][프로그래머스][Level2] 수식 최대화

코드

from itertools import permutations

def calcul(expression,num,oper):
    if num==3:
        return expression
    cp=expression.split(oper[num])
    cp=[calcul(i,num+1,oper) for i in cp]
    return str(eval(oper[num].join(cp)))

def solution(expression):
    answer=0
    for oper in permutations(['+','-','*'],3):
        answer=max(answer,abs(int(calcul(expression,0,oper))))
    return answer

완전탐색으로 풀었다.

3+2*4+6-2 를 +, -, * 의 우선순위로 계산하면

먼저, 가장 마지막에 계산하는 *로 split 한다.

[3+2, 4+6-2] 로 나뉘게 된다.

각각을 다시 -로 split 한다.

[[3+2] , [4+6, 2]] 로 나뉜다.

이 상태에서 +로 계산한다.

[[5] , [10,2]]

이 상태로 -로 계산한다.

[5, 8]

마지막으로 *로 계산한다.

40

이런 방식 모든 경우를 확인한다.

Discussion and feedback