House Robber
Updated:
DP문제이다
인접한 것은 통과해서 인접하지 않은것을 선택해서 최대합을 만드는 중요한 문제이다
그냥 맨처음에는 단순하게 인접한것을 선택해서 틀렸다. 생각해보니 DP 개념을 집어넣어서 풀어야 하는문제였다
by Java
class Solution {
public int rob(int[] nums) {
int[] dp = new int[nums.length+1];
Arrays.fill(dp,-1);
return go(0,nums.length,nums,dp);
}
private int go(int here,int depth,int[] nums,int[] dp) {
if(here>=depth) return 0;
if(dp[here]!=-1) return dp[here];
if(here == depth-1) return nums[here];
dp[here]=0;
dp[here] = Math.max(go(here+2,depth,nums,dp)+nums[here],go(here+3,depth,nums,dp)+nums[here+1]);
return dp[here];
}
}
Leave a comment