이번 문제는 주어진 조건대로 백트레킹을 진행하며 모든 경우를 구하고, 그 중 가장 큰 경우를 구하는 방식으로 해결하였다. x-1, x+1 인덱스의 원소의 곱을 에너지로 더하기 위해서 구슬 리스트를 지우기 전에 해당 값들을 미리 저장하고, x위치의 원소를 지운 후, 재귀 호출 하였고, insert함수를 이용하여 원래대로 구슬 리스트를 돌려놓았다.
marbles[i-1]*marbles[i+1]
를 저장한다.marbles.pop(i)
의 값을 저장한다.get_energy(cnt+1, e+tmp_e)
를 재귀 호출한다.n=int(input())
marbles=list(map(int, input().split()))
energy=0
def get_energy(cnt, e):
global energy
if cnt==n-2:
energy=max(energy, e)
return
for i in range(1, len(marbles)-1):
tmp_e=marbles[i-1]*marbles[i+1]
tmp=marbles.pop(i)
get_energy(cnt+1, e+tmp_e)
marbles.insert(i, tmp)
get_energy(0, 0)
print(energy)