📖 오늘의 학습 키워드
동적계획법
[도둑질]
https://school.programmers.co.kr/learn/courses/30/lessons/42897
class Solution {
public int solution(int[] money) {
int len = money.length;
long[] dp1 = new long[len];
long[] dp2 = new long[len];
dp1[0] = money[0];
dp1[1] = money[0];
dp2[1] = money[1];
for(int i = 2; i < len; i++) {
dp1[i] = Math.max(dp1[i-2] + money[i], dp1[i-1]);
dp2[i] = Math.max(dp2[i-2] + money[i], dp2[i-1]);
}
int answer = (int)(Math.max(dp1[len-2], dp2[len-1]));
return answer;
}
}
레벨 4치고는 쉽게 느껴진 DP 문제였던 것 같다. 집들이 원형으로 배치된 것을 고려해 두 가지 경우로 나눠 풀어야 한다는 점이 다른 문제와 조금 달랐던 것 같다.