Written by
최태열
on
on
[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