Skip to content

Commit 71be5dd

Browse files
committed
feat: add house robber ii solution
1 parent f00cbcb commit 71be5dd

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

โ€Žhouse-robber-ii/mangodm-web.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
def rob(self, nums: List[int]) -> int:
6+
"""
7+
- Idea: i๋ฒˆ์งธ ์ง‘๊นŒ์ง€์˜ ์ตœ๋Œ€ ๊ธˆ์•ก์€ ๋‘ ๊ฐ€์ง€ ์ค‘ ๋” ํฐ ๊ฐ’์œผ๋กœ ๊ฒฐ์ •๋œ๋‹ค.
8+
1. (i-2๋ฒˆ์งธ ์ง‘๊นŒ์ง€์˜ ์ตœ๋Œ€ ๊ธˆ์•ก) + i๋ฒˆ์งธ ์ง‘์˜ ๊ธˆ์•ก
9+
2. (i-1๋ฒˆ์งธ ์ง‘๊นŒ์ง€์˜ ์ตœ๋Œ€ ๊ธˆ์•ก)
10+
์ด๋ฅผ ์ด์šฉํ•ด ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ๊ฐ ์ง‘๊นŒ์ง€์˜ ์ตœ๋Œ€ ๊ธˆ์•ก์„ ๊ณ„์‚ฐํ•œ๋‹ค.
11+
12+
๋‹ค๋งŒ, ๋งจ ๋งˆ์ง€๋ง‰ ์ง‘๊ณผ ์ฒซ๋ฒˆ์งธ ์ง‘์ด ์ด์–ด์ง„ ์‚ฌ์ดํด(cycle) ํ˜•ํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์—
13+
์ฒซ๋ฒˆ์งธ ์ง‘๊ณผ ๋งˆ์ง€๋ง‰ ์ง‘์ด ๋™์‹œ์— ๋„๋‘‘๋งž์„ ์ˆ˜๋Š” ์—†๋‹ค.
14+
์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆ ์„œ ๊ฐ๊ฐ ๊ณ„์‚ฐํ•˜๊ณ , ๋‘˜ ์ค‘ ๋” ํฐ ๊ฐ’์„ ์„ ํƒํ•œ๋‹ค.
15+
1. ์ฒซ๋ฒˆ์งธ ์ง‘์„ ํฌํ•จํ•˜๊ณ  ๋งˆ์ง€๋ง‰ ์ง‘์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
16+
2. ์ฒซ๋ฒˆ์งธ ์ง‘์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ๋งˆ์ง€๋ง‰ ์ง‘์„ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ
17+
- Time Complexity: O(n). n์€ ์ง‘์˜ ๊ฐœ์ˆ˜.
18+
๋ชจ๋“  ์ง‘์„ ํ•œ๋ฒˆ์”ฉ ์ˆœํšŒํ•ด์•ผ ํ•˜๋ฏ€๋กœ O(n) ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค.
19+
- Space Complexity: O(n). n์€ ์ง‘์˜ ๊ฐœ์ˆ˜.
20+
๊ฐ ์ง‘๊นŒ์ง€์˜ ์ตœ๋Œ€ ๊ธˆ์•ก์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ O(n) ๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
21+
"""
22+
if len(nums) == 1:
23+
return nums[0]
24+
25+
dp1 = [0] + [0] * len(nums)
26+
dp1[1] = nums[0]
27+
28+
dp2 = [0] + [0] * len(nums)
29+
dp2[1] = 0
30+
31+
for i in range(2, len(nums) + 1):
32+
dp1[i] = max(dp1[i - 1], dp1[i - 2] + nums[i - 1])
33+
dp2[i] = max(dp2[i - 1], dp2[i - 2] + nums[i - 1])
34+
35+
return max(dp1[-2], dp2[-1])

0 commit comments

Comments
ย (0)