알고리즘
16198번: 에너지 모으기 파이썬
구슬탈출
2023. 8. 6. 21:54
유형은 백트래킹
N = int(input())
arr = list(map(int,(input().split())))
result = 0
def dfs(v,c):
global result
# 배열이 두칸남았을 경우
# 맨왼쪽 오른쪽은 지울수없으므로 이렇게한다
if N-2 == c:
result = max(result,v)
return
for i in range(1,len(arr) - 1):
# 지울 인덱스 번호 양옆을 곱을 구한다.
value = arr[i-1] * arr[i+1]
# 삭제한값을 다시 복구 하기위해 변수로 선언한다
rollback = arr[i]
# i번째에 있는 요소를 삭제한다.
del arr[i]
dfs(value+v,c+1)
# 삭제한 요소를 다시 복구한다.
arr.insert(i,rollback)
dfs(0,0)
print(result)