public static int solution(int[] money) {
int[] dp1 = new int[n];
int[] dp2 = new int[n];
dp1[0] = money[0];
dp2[0] = 0;
for (int i = 1; i < n; i++) {
dp1[i] = Math.max(i >= 2 ? dp1[i - 2] + money[i] : money[i], dp1[i - 1]);
dp2[i] = Math.max(i >= 2 ? dp2[i - 2] + money[i] : money[i], dp2[i - 1]);
}
return Math.max(dp1[n - 2], dp2[n - 1]);
}
dp를 사용
원형이므로 각 배열의 0번 인덱스를 다르게 초기화하여 첫번째 집을 터는 경우 dp1 털지 않는 경우를 dp2으로 설정