File tree Expand file tree Collapse file tree 1 file changed +59
-0
lines changed
Expand file tree Collapse file tree 1 file changed +59
-0
lines changed Original file line number Diff line number Diff line change 1+ """
2+ Inputs: 정수형 배열 nums
3+
4+ Outputs: 훔치는 돈의 max값
5+
6+ Constraints:
7+ 1 <= nums.length <= 100
8+ 0 <= nums[i] <= 400
9+
10+ Time Complexity: O(2^n) X
11+
12+ dp[n] = max(dp(n), dp(n - 2) + nums[i])
13+ 재귀 사용
14+ 2^(100)
15+ 2^10 = 10^3
16+ 막상 실제 값을 출력하면 말이 안되는 값..
17+
18+ Space Complexity: O(n)
19+ dp 배열은 nums와 똑같으므로
20+
21+ # 에러
22+ constraint로 인한 반례 항상 생각하도록!
23+ len이 0이거나 1일때는 따로 처리!
24+
25+ # 반례
26+ nums =
27+ [2,1,1,2]
28+
29+ output = 3, expected = 4
30+
31+ len(nums) - 1이 0 혹은 1일때, 즉 nums길이가 1 혹은 2일 경우엔 따로 처리
32+
33+ """
34+
35+
36+ class Solution :
37+ def rob (self , nums ) -> int :
38+ dp = [- 1 for _ in range (len (nums ))]
39+ n = len (nums ) - 1
40+
41+ if n == 0 :
42+ return nums [0 ]
43+
44+ # 초기값 세팅
45+ dp [0 ] = nums [0 ]
46+ dp [1 ] = max (nums [1 ], nums [0 ])
47+
48+ if n == 1 :
49+ return dp [1 ]
50+
51+ def memo (i ):
52+ if dp [i ] != - 1 :
53+ return dp [i ]
54+
55+ dp [i ] = max (memo (i - 1 ), nums [i ] + memo (i - 2 ))
56+ return dp [i ]
57+
58+ return max (memo (n - 1 ), nums [n ] + memo (n - 2 ))
59+
You can’t perform that action at this time.
0 commit comments