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;
}
}
'알고리즘' 카테고리의 다른 글
프로그래머스 완주하지 못한 선수 (JAVA) (0) | 2023.07.17 |
---|---|
백준 18511번 큰 수 구성하기 (JAVA) (0) | 2023.07.16 |
백준 2167번 2차원 배열의 합 (JAVA) (0) | 2023.07.14 |
백준 1303번 전쟁 (JAVA) (0) | 2023.07.13 |
백준 2616번 소형기관차 (JAVA) (0) | 2023.07.12 |