Skip to content

Commit b63c248

Browse files
committed
add solution: house-robber
1 parent 2e36ae9 commit b63c248

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
'''
2+
문제: μ—°μ†ν•œ 집이 μ•„λ‹Œ 집을 ν„Έ λ•Œ 얻을 수 μžˆλŠ” μ΅œλŒ€ κΈˆμ•‘μ„ κ΅¬ν•˜λŠ” 문제
3+
풀이: λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ°
4+
초기 κ°’ μ„€μ • ν›„,
5+
dp[i] = max(dp[i-2], dp[i-3]) + nums[i] 점화식 μ„€μ •
6+
ν•œμ§‘, ν˜Ήμ€ 두집을 κ±΄λ„ˆμ„œ ν„Έμ—ˆμ„ 경우, λ‘˜ 쀑 κ°€μž₯ 큰값을 고름
7+
8+
μ‹œκ°„λ³΅μž‘λ„: O(n)
9+
점점 순차적으둜 dp 배열을 μ±„μ›Œλ‚˜κ°€λ―€λ‘œ O(n)
10+
κ³΅κ°„λ³΅μž‘λ„: O(n)
11+
dp 배열을 ν•˜λ‚˜ μƒμ„±ν•˜λ―€λ‘œ O(n)
12+
13+
μ‚¬μš©ν•œ 자료ꡬ쑰: 리슀트
14+
15+
'''
16+
17+
18+
class Solution:
19+
def rob(self, nums: List[int]) -> int:
20+
dp = [0 for i in range(len(nums))]
21+
if len(nums) == 1:
22+
return nums[0]
23+
elif len(nums) == 2:
24+
return max(nums[0], nums[1])
25+
elif len(nums) == 3:
26+
return max(nums[0], nums[1], nums[0]+nums[2])
27+
28+
dp[0], dp[1], dp[2] = nums[0], nums[1], nums[0]+nums[2]
29+
30+
for i in range(3, len(nums)):
31+
dp[i] = max(dp[i-2], dp[i-3]) + nums[i]
32+
return max(dp[len(nums)-1], dp[len(nums)-2])
33+
34+

0 commit comments

Comments
Β (0)