배열의 앞에서부터 탐색하며 수를 더해서 합을 구하려고 합니다. 이때 연속된 칸에 있는 값은 가질 수 없고 마지막 원소와 첫 번째 원소는 연속되어 있다고 가정합니다. 이때 구할 수 있는 합의 최댓값을 출력하는 문제입니다.
def solution(money):
answer = 0
totalmoney = len(money)
if totalmoney==1:
return money[0]
dp=[0 for _ in range(totalmoney)]
for i in range(0, totalmoney-1):
if i==0:
dp[i]=money[i]
elif i==1:
dp[i]=max(dp[i-1], money[i])
else:
dp[i]=max(dp[i-2]+money[i], dp[i-1])
answer=dp[totalmoney-2]
for i in range(totalmoney):
dp[i]=0
for i in range(1, totalmoney):
if i==1:
dp[i]=money[i]
else:
dp[i]=max(dp[i-2]+money[i], dp[i-1])
if answer<dp[totalmoney-1]:
answer=dp[totalmoney-1]
return answer