Skip to content

Commit 7504f13

Browse files
committed
2 parents 41b2086 + a8abffa commit 7504f13

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed

โ€Žhouse-robber/Chaedie.py

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
'''
2+
Solution:
3+
์Šค์Šค๋กœ ํ’€์ง€ ๋ชปํ•ด ํ•™์Šต๋งŒ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
4+
๋‹ค์Œ ๊ธฐํšŒ์— ๋‹ค์‹œ ํ’€์–ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
5+
'''
6+
class Solution:
7+
def rob(self, nums: List[int]) -> int:
8+
prev, curr = 0, 0
9+
for num in nums:
10+
prev, curr = curr, max(num + prev, curr)
11+
12+
return curr
13+
14+
15+
# class Solution:
16+
# '''
17+
# 4. ๋‹ฌ๋ ˆ์˜ ์ฝ”๋“œ ํ’€์ด - DP, prev, curr
18+
# O(n) time
19+
# O(1) space
20+
# '''
21+
22+
# # ๋‹ฌ๋ ˆ์˜ ์ฝ”๋“œ ํ’€์ด - DP, prev, cur
23+
24+
# def rob(self, nums: List[int]) -> int:
25+
# prev, curr = 0, 0
26+
# for num in nums:
27+
# prev, curr = curr, max(num + prev, curr)
28+
29+
# return curr
30+
31+
# '''
32+
# 3. ๋‹ฌ๋ ˆ์˜ ์ฝ”๋“œ ํ’€์ด - DP
33+
# [1,2,3,1]
34+
# [1, 2, 3, 1]
35+
# DP:[0, 1, 2, 4, 4]
36+
# MAX(1 + DP[2], DP[1]) = MAX(1 + 2, 4) = 4
37+
# '''
38+
# # ๋‹ฌ๋ ˆ์˜ ์ฝ”๋“œ ํ’€์ด - DP
39+
# # def rob(self, nums: List[int]) -> int:
40+
# # dp = [0] * (len(nums) + 1)
41+
# # dp[1] = nums[0]
42+
# # for n in range(2,len(nums) + 1):
43+
# # dp[n] = max(nums[n - 1] + dp[n - 2], dp[n - 1])
44+
# # return dp[-1]
45+
# '''
46+
# 2. ๋‹ฌ๋ ˆ์˜ ์ฝ”๋“œ ํ’€์ด - ์žฌ๊ท€, ๋ฉ”๋ชจ์ด์ œ์ด์…˜
47+
# time: O(n)
48+
# space: O(n)
49+
# '''
50+
# # ๋‹ฌ๋ ˆ์˜ ์ฝ”๋“œ ํ’€์ด - ์žฌ๊ท€, ๋ฉ”๋ชจ์ด์ œ์ด์…˜
51+
# # def rob(self, nums: List[int]) -> int:
52+
# # memo = {}
53+
54+
# # def dfs(start):
55+
# # if start in memo:
56+
# # return memo[start]
57+
# # if not start < len(nums):
58+
# # memo[start] = 0
59+
# # else:
60+
# # memo[start] = max(nums[start] + dfs(start + 2), dfs(start + 1))
61+
# # return memo[start]
62+
# # return dfs(0)
63+
# '''
64+
# 1. ๋‹ฌ๋ ˆ์˜ ์ฝ”๋“œ ํ’€์ด - ์žฌ๊ท€
65+
# time: O(2^n)
66+
# space: O(n)
67+
68+
# F([1,2,3,1]) => MAX(1 + F([3,1], f([2,3,1])))
69+
# F([3,1]) => MAX(3 + F([]), F([1]))
70+
# F([]) => 0
71+
# F([1]) => MAX(1 + F([]), F([])) => MAX(1 + 0, 0) => 1
72+
# F([]) => 0
73+
# F([]) => 0
74+
# F([2,3,1]) => MAX(2 + F([1]), F([3,1]))
75+
# F([1]) => MAX(1 + F([]), F([])) => MAX(1 + 0, 0) => 1
76+
# F([]) => 0
77+
# F([]) => 0
78+
# F([3,1]) => MAX(3 + F([]), F([1]))
79+
# F([]) => 0
80+
# F([1]) => MAX(1 + F([]), F([])) => MAX(1 + 0, 0) => 1
81+
# F([]) => 0
82+
# F([]) => 0
83+
# ์žฌ๊ท€๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ฐ˜๋ณต๋˜๊ณ  ์žˆ๋‹ค.
84+
# ๋ฉ”๋ชจ์ด์ œ์ด์…˜์œผ๋กœ ๊ธฐ์–ตํ•ด๋‘๋ฉด ๋ฐ˜๋ณต์€ ์Šคํ‚ตํ•  ์ˆ˜ ์žˆ๋‹ค.
85+
# '''
86+
# # ๋‹ฌ๋ ˆ์˜ ์ฝ”๋“œ ํ’€์ด - ์žฌ๊ท€
87+
# # def rob(self, nums: List[int]) -> int:
88+
89+
# # def dfs(start):
90+
# # if not start < len(nums):
91+
# # return 0
92+
# # return max(nums[start] + dfs(start + 2), dfs(start + 1))
93+
# # return dfs(0)
94+
95+
# # neetcode ํ’€์ด - DP, ์ดํ•ด์•ˆ๋จ...
96+
# # def rob(self, nums: List[int]) -> int:
97+
# # rob1, rob2 = 0, 0
98+
# # # [rob1, rob2, n, n+1, ...]
99+
# # for n in nums:
100+
# # temp = max(n + rob1, rob2)
101+
# # rob1 = rob2
102+
# # rob2 = temp
103+
# # return rob2

0 commit comments

Comments
ย (0)