230225 도둑질

Jongleee·2023년 2월 25일
0

TIL

목록 보기
191/737
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으로 설정

0개의 댓글