-
프로그래머스 - 도둑질 [자바]알고리즘 문제 풀이 2021. 2. 14. 21:17
/* * 2021-02-14 * https://programmers.co.kr/learn/courses/30/lessons/42897?language=java */ package study.programmers.dynamic_programming; public class Thievery { public int solution(int[] money) { // 일자로 생각하고 점화식을 만든 후 // 원형임을 고려하자 // 처음 집은 포함하지 않는 경우 int[] dp = new int[money.length]; dp[0] = 0; dp[1] = money[1]; // 처음 집을 포함하는 경우 int[] dp2 = new int[money.length]; dp2[0] = money[0]; dp2[1] = Math.max(money[0], money[1]); for (int i = 2; i < money.length; i++) { dp[i] = Math.max(dp[i - 1], money[i] + dp[i - 2]); } for (int i = 2; i < money.length - 1; i++) { dp2[i] = Math.max(dp2[i - 1], money[i] + dp2[i - 2]); } return Math.max(getLargest(dp), getLargest(dp2)); } public int getLargest(int[] arr) { int largest = 0; for (int num : arr) { if (num > largest) { largest = num; } } return largest; } }
점화식 생각하기 어렵다..
반응형'알고리즘 문제 풀이' 카테고리의 다른 글
Codility - MissingInteger (0) 2021.02.22 프로그래머스 - 체육복[코틀린] (0) 2021.02.22 프로그래머스 - 등굣길 [자바] (0) 2021.02.12 프로그래머스 - 정수 삼각형 [Java] (0) 2021.02.12 프로그래머스 - N 으로 표현 [코틀린] (0) 2021.02.07