Skip to content

Commit 3cf9df1

Browse files
committed
house robber
1 parent eeafd95 commit 3cf9df1

File tree

1 file changed

+16
-19
lines changed

1 file changed

+16
-19
lines changed

house-robber/eunhwa99.java

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,21 @@
1-
import java.util.Arrays;
2-
1+
// 시간 복잡도: O(n) - dp 배열을 한 번 순회
2+
// 공간 복잡도: O(n) - dp 배열
33
class Solution {
4-
int size = 0;
5-
int[] numArray;
6-
int[] dp;
7-
84
public int rob(int[] nums) {
9-
size = nums.length;
10-
dp = new int[size];
11-
// 배열의 모든 값을 -1로 변경
12-
Arrays.fill(dp, -1);
13-
numArray = nums;
14-
return fun(0);
15-
}
5+
int[][] dp = new int[nums.length][2]; // 0: not robbed, 1: robbed
6+
7+
if(nums.length == 0) return 0;
8+
if(nums.length == 1) return nums[0];
169

17-
private int fun(int idx) {
18-
if (idx >= size) return 0;
19-
if (dp[idx] != -1) return dp[idx];
20-
dp[idx] = 0; // check
21-
dp[idx] += Math.max(fun(idx + 2) + numArray[idx], fun(idx + 1));
22-
return dp[idx];
10+
dp[0][0] = 0;
11+
dp[0][1] = nums[0];
12+
13+
for(int i = 1; i < nums.length; i++){
14+
dp[i][0] = Math.max(dp[i-1][0], dp[i-1][1]);
15+
dp[i][1] = dp[i-1][0] + nums[i];
16+
}
17+
18+
return Math.max(dp[nums.length-1][0], dp[nums.length-1][1]);
2319
}
2420
}
21+

0 commit comments

Comments
 (0)