Skip to content

Commit 5774844

Browse files
committed
house-robber-ii solution (py)
1 parent e4555f4 commit 5774844

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

β€Žhouse-robber-ii/hi-rachel.pyβ€Ž

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
"""
2+
이웃집은 λͺ»ν…€, μ£Όμ–΄μ§„ nums list 집은 μ›ν˜•μœΌλ‘œ 이어져 있음 (맨 처음 <- > 맨 λ§ˆμ§€λ§‰ 이웃)
3+
κ°€μž₯ λ§Žμ€ λˆμ„ κ°€μ§€κ³  μžˆλŠ” 집을 μ΅œλŒ€ν•œμœΌλ‘œ ν„΄ 총 κΈˆμ•‘μ„ λ°˜ν™˜
4+
5+
1. 첫 집을 ν¬ν•¨ν•˜κ³ , λ§ˆμ§€λ§‰ 집을 μ œμ™Έν•˜λŠ” 경우 nums[:-1]
6+
2. 첫 집을 μ œμ™Έν•˜κ³ , λ§ˆμ§€λ§‰ 집을 ν¬ν•¨ν•˜λŠ” 경우 nums[1:]
7+
8+
TC: O(N),
9+
SC: O(N)
10+
"""
11+
12+
from typing import List
13+
14+
class Solution:
15+
def rob(self, nums: List[int]) -> int:
16+
if len(nums) == 0:
17+
return 0
18+
if len(nums) == 1:
19+
return nums[0]
20+
if len(nums) == 2:
21+
return max(nums)
22+
23+
def rob_linear(houses: List[int]) -> int:
24+
if len(houses) == 1:
25+
return houses[0]
26+
27+
dp = [0] * len(houses)
28+
dp[0] = houses[0]
29+
dp[1] = max(houses[0], houses[1])
30+
for i in range(2, len(houses)):
31+
dp[i] = max(dp[i - 1], houses[i] + dp[i - 2])
32+
return dp[-1]
33+
34+
case1 = rob_linear(nums[:-1])
35+
case2 = rob_linear(nums[1:])
36+
37+
return max(case1, case2)

0 commit comments

Comments
Β (0)