본문 바로가기

IT/Java

프로그래머스 DP 도둑

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
public class Stolen {
	public int solution(int[] money) {
        int answer = 0;
        
        int length = money.length;
        
        if(length == 3) {
        	answer = Math.max(Math.max(money[0], money[1]),money[2]);
        }else if(length == 4){
        	answer = Math.max(money[0]+money[2],money[1]+money[3]);
        }else {
        	int dp1[] = Arrays.copyOf(money, length);
            int dp2[] = Arrays.copyOf(money, length);
            
            dp1[length-4] = dp1[length-4] + dp1[length-2];
            
            for(int i=length-5; i>=0; i--) {
            	dp1[i] = dp1[i] + Math.max(dp1[i+2], dp1[i+3]);
            }
            
            System.out.println(length);
            System.out.println(dp2.length);
            dp2[length-3] = dp2[length-3]+ dp2[length-1];
            for(int i=length-4; i>=1; i--) {
            	dp2[i] = dp2[i] + Math.max(dp2[i+2], dp2[i+3]);
            }

            answer = Math.max(dp1[0], dp2[1]);
        }

        return answer;
    }
	
	public static void main(String[] args) {
		int[] money = {1,2,3,1,5,9,1};
		new Stolen().solution(money);
	}
}