두가지 경우를 나뉜다.
1. 첫번 째 집을 도둑질 할 경우
2. 첫번 째 집을 도둑질 안하고, 두번 째 집부터 도둑질 할 경우
3. 시작점을 정하고, index 2부터 주어진 money의 길이만큼 반복하면서 index-1과 index-2 + money[index]를 비교해 가면서 최댓값을 저장한다.
import java.util.*;
class Solution {
public int solution(int[] money) {
int len = money.length;
int[] dp0 = new int[len];
int[] dp1 = new int[len];
dp0[0] = dp0[1] =money[0];
dp1[1] = money[1];
for(int i=2; i<len; i++){
dp0[i] = Math.max(dp0[i-1], dp0[i-2]+money[i]);
dp1[i] = Math.max(dp1[i-1], dp1[i-2]+money[i]);
}
return Math.max(dp0[len-2],dp1[len-1]);
}
}