알고리즘
프로그래머스 도둑질 (JAVA)
박카스마시며코딩
2023. 7. 15. 19:29
https://school.programmers.co.kr/learn/courses/30/lessons/42897
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
저는 DP를 통해 문제를 해결하였습니다.
dp1는 첫번째 털고, 마지막은 털지 않도록 하였습니다.
dp2는 첫번째를 안 털고, 마지막은 털 수 있도록 하여 문제를 해결하였습니다.
package Programmers.ETC;
public class 도둑질 {
public int solution(int[] money) {
int answer = 0;
int[] dp1 = new int[money.length];
int[] dp2 = new int[money.length];
dp1[0] = money[0];
dp1[1] = Math.max(money[0],money[1]);
dp2[1] = money[1];
int size = money.length;
for(int i = 2 ; i < size ; i++){
dp2[i] = Math.max(dp2[i-1],dp2[i-2]+money[i]);
if(i == size-1){
continue;
}
dp1[i] = Math.max(dp1[i-1],dp1[i-2]+money[i]);
}
answer = Math.max(dp1[size-2],dp2[size-1]);
return answer;
}
}