Dp-1 198. House Robber

이기현·2020년 8월 7일

코딩테스트 준비

목록 보기
11/20

DP문제를 몇개 풀어보지 않았다 보니, 간단한 문제인데도 시간이 조금 걸렸다. 문제를 많이 풀어보고 감을 익히는것이 중요할 것 같다.

각 포인트에서의 최대 이익값을 구해놓는것이 중요한 문제였다. 각 포인트에서의 max값을 구해놓고 그것을 이용해서 다음 포인트의 max값을 구할 때 이용하는 Dp문제였다.

class Solution {
    public int rob(int[] num) {
		if(num.length == 0)
			return 0;
		if(num.length == 1)
			return num[0];

		int[] dp = new int[num.length];
		dp[0] = num[0];
		dp[1] = Math.max(num[0], num[1]);
		
		for(int i = 2; i < num.length; i++) {
			dp[i] = Math.max(dp[i-2] + num[i], dp[i-1]);
		}
		return dp[num.length-1];
    }
}
profile
실력을 쌓아가는 하루하루

0개의 댓글