Skip to content

Commit a93291c

Browse files
committed
feat: implement rob function to calculate maximum money that can be robbed without alerting the police
1 parent 7c8a22c commit a93291c

1 file changed

Lines changed: 29 additions & 0 deletions

File tree

β€Žhouse-robber/kangdaia.pyβ€Ž

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution:
2+
def rob(self, nums: list[int]) -> int:
3+
"""
4+
μ—°μ†λœ 집을 ν›”μΉ˜μ§€ μ•Šκ³  μ΅œλŒ€ν•œ λ§Žμ€ λˆμ„ ν›”μΉ˜λŠ” ν•¨μˆ˜
5+
6+
방법
7+
1. DP λ°©μ‹μœΌλ‘œ, 각 집을 ν›”μΉ  λ•Œμ˜ μ΅œλŒ€ 돈의 양을 μ—…λ°μ΄νŠΈ ν•˜λŠ” 방법.
8+
dp[0], dp[1]λ₯Ό μ΄ˆκΈ°ν™” ν•˜κ³ , dp[2]λŠ” dp[0]+nums[2]둜 ꡬ성
9+
이후 dp[i]λŠ” dp[i-2]와 dp[i-3] 쀑 큰 값에 nums[i]λ₯Ό λ”ν•œ κ°’μœΌλ‘œ ꡬ성
10+
max(dp)둜 μ΅œλŒ€κ°’ μ°ΎκΈ°
11+
2. 1번 λ°©λ²•μ—μ„œ 점화식을 μ’€ 더 κ°„λ‹¨ν•˜κ²Œ, dp[i]λŠ” dp[i-1]κ³Ό dp[i-2]+nums[i] 쀑 큰 κ°’μœΌλ‘œ κ΅¬μ„±ν•˜λŠ” 방법.
12+
dp[i-1]은 i번째 집을 ν›”μΉ˜μ§€ μ•Šμ•˜μ„ λ•Œμ˜ μ΅œλŒ€κ°’, dp[i-2]+nums[i]λŠ” i번째 집을 훔쳀을 λ•Œμ˜ μ΅œλŒ€κ°’μ΄λ―€λ‘œ, λ‘˜ 쀑 큰 값을 dp[i]둜 μ—…λ°μ΄νŠΈ ν•˜λŠ” 방식.
13+
dp[-1]이 μ΅œλŒ€κ°’μ΄λ―€λ‘œ, max(dp) λŒ€μ‹  dp[-1]둜 μ΅œλŒ€κ°’ μ°ΎκΈ°
14+
3. 2번 λ°©λ²•μ—μ„œ dp 리슀트 λŒ€μ‹ , 두 개의 λ³€μˆ˜λ‘œ 이전 두 집을 훔쳀을 λ•Œμ˜ μ΅œλŒ€κ°’μ„ μ—…λ°μ΄νŠΈ ν•˜λŠ” 방법.
15+
16+
Args:
17+
nums (list[int]): 각 집에 μžˆλŠ” 돈의 양이 λ‹΄κΈ΄ 리슀트
18+
19+
Returns:
20+
int: μ΅œλŒ€λ‘œ ν›”μΉ  수 μžˆλŠ” 돈의 μ–‘
21+
"""
22+
if len(nums) <= 2:
23+
return max(nums)
24+
prev1, prev2 = 0, 0
25+
for num in nums:
26+
temp = prev1
27+
prev1 = max(prev1, prev2 + num)
28+
prev2 = temp
29+
return prev1

0 commit comments

Comments
Β (0)