Skip to content

Commit bd74a52

Browse files
committed
solve(w01): 198. House Robber
1 parent de9f641 commit bd74a52

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

β€Žhouse-robber/seungriyou.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# https://leetcode.com/problems/house-robber/
2+
3+
from typing import List
4+
5+
class Solution:
6+
def rob(self, nums: List[int]) -> int:
7+
"""
8+
[Complexity]
9+
- TC: O(n)
10+
- SC: O(1) (space-optimized DP)
11+
12+
[Approach]
13+
μΈμ ‘ν•œ 두 집을 λͺ¨λ‘ ν„Έλ©΄ μ•ˆ λ˜λ―€λ‘œ λ‹€μŒκ³Ό 같이 dp table을 ꡬ상할 수 μžˆλ‹€.
14+
dp[i] = (순차적으둜) i-th houseλ₯Ό ν„Έ λ•Œ 얻을 수 μžˆλŠ” max amount of money
15+
= max(이전 집을 ν„Έμ—ˆμ„ λ•Œ, 이전 집을 ν„Έμ§€ μ•Šμ•˜μ„ λ•Œ)
16+
= max(μ§€κΈˆ 집을 ν„Έ 수 없을 λ•Œ, μ§€κΈˆ 집을 ν„Έ 수 μžˆμ„ λ•Œ)
17+
= max(dp[i - 1], dp[i - 2] + nums[i])
18+
μ΄λ•Œ, dp[i] 값을 μ±„μš°κΈ° μœ„ν•΄ dp[i - 1]κ³Ό dp[i - 2] κ°’λ§Œ ν•„μš”ν•˜λ―€λ‘œ,
19+
O(n) space(= list)κ°€ μ•„λ‹Œ O(1) space(= variables)둜 optimize ν•  수 μžˆλ‹€.
20+
prev1 = dp[i - 1]
21+
prev2 = dp[i - 2]
22+
"""
23+
24+
prev1 = prev2 = 0
25+
26+
for num in nums:
27+
prev1, prev2 = max(prev1, prev2 + num), prev1 # -- multiple assignment
28+
29+
return prev1

0 commit comments

Comments
Β (0)