[프로그래머스][도둑질]-Lv.4

호준·2022년 11월 22일
0

Algorithm

목록 보기
108/111
post-thumbnail

🎈 문제

문제링크

🎈 제한사항

🎈 접근방법

두가지 경우를 나뉜다.
1. 첫번 째 집을 도둑질 할 경우
2. 첫번 째 집을 도둑질 안하고, 두번 째 집부터 도둑질 할 경우
3. 시작점을 정하고, index 2부터 주어진 money의 길이만큼 반복하면서 index-1과 index-2 + money[index]를 비교해 가면서 최댓값을 저장한다.

🎈 코드

import java.util.*;
class Solution {
    public int solution(int[] money) {
        int len = money.length;
        int[] dp0 = new int[len];
        int[] dp1 = new int[len];
        dp0[0] = dp0[1] =money[0];
        dp1[1] = money[1];
        for(int i=2; i<len; i++){
            dp0[i] = Math.max(dp0[i-1], dp0[i-2]+money[i]);
            dp1[i] = Math.max(dp1[i-1], dp1[i-2]+money[i]);
        }
        return Math.max(dp0[len-2],dp1[len-1]);
    }
}
profile
도전하지 않는 사람은 실패도 성공도 없다

0개의 댓글