Algorithm/Programmers

[프로그래머스] 도둑질

sirius 2021. 3. 8. 11:17
https://school.programmers.co.kr/learn/courses/30/lessons/42897

첫번째 집을 훔칠 경우 - 마지막 집을 훔칠 수 없음

두번째 집부터 훔칠 경우 - 마지막 집을 훔칠 수 있음

 

 

import java.util.*;

class Solution {
    public int solution(int[] money) {
        int answer = 0;

        int[] dp = new int[money.length];
        int[] dp2 = new int[money.length];

        dp[0] = money[0];
        dp[1] = money[0];

        dp2[0] = 0;
        dp2[1] = money[1];

        for(int i=2; i< money.length; i++) {
            dp[i] = Math.max(dp[i - 1], dp[i - 2] + money[i]);
            dp2[i] = Math.max(dp2[i - 1], dp2[i - 2] + money[i]);            
        }

        answer =  Math.max(dp[money.length-2], dp2[money.length-1]);
        return answer;
    }
}