|
| 1 | +class Solution(object): |
| 2 | + def rob(self, nums): |
| 3 | + """ |
| 4 | + # μ΄κΈ° νμ΄ |
| 5 | + rob_house_even = 0 # μ§μ μ§λ€μ ν°λ κ²½μ° κΈμ‘μ ν© |
| 6 | + rob_house_odd = 0 # νμ μ§λ€μ ν°λ κ²½μ° κΈμ‘μ ν© |
| 7 | + for index, value in enumerate(nums): |
| 8 | + if index % 2 == 0: |
| 9 | + rob_house_even += value |
| 10 | + else: |
| 11 | + rob_house_odd += value |
| 12 | + |
| 13 | + return max(rob_house_even, rob_house_odd) |
| 14 | + # μ€ν¨: |
| 15 | + # λ¨μν μ§μμ νμλ₯Ό ꡬλΆνλ κ²λ§μΌλ‘ |
| 16 | + # μ΅μ ν΄λ₯Ό ꡬν μ μμ |
| 17 | +
|
| 18 | + =========================================== |
| 19 | +
|
| 20 | + λμ νλ‘κ·Έλλ°μ νμ©ν΄μ λ¬Έμ λ₯Ό ν΄κ²° |
| 21 | + κ°κ°μ μ΅μ ν΄λ₯Ό λμ νμ¬ λ§μ§λ§κΉμ§μ μ΅μ ν΄λ₯Ό ꡬν΄μΌ ν¨ |
| 22 | + |
| 23 | + """ |
| 24 | + if not nums: # λΉ λ¦¬μ€νΈκ° μ£Όμ΄μ§ κ²½μ°, 0μ λ°ν |
| 25 | + return 0 |
| 26 | + if len(nums) == 1: # μμκ° νλμΈ κ²½μ°, κ·Έ κ°μ λ°ν |
| 27 | + return nums[0] |
| 28 | + |
| 29 | + # prev2: i-2λ²μ§ΈκΉμ§ κ³ λ € νμ λμ μ΅λ κΈμ‘ |
| 30 | + # prev1: i-1λ²μ§ΈκΉμ§ κ³ λ € νμ λμ μ΅λ κΈμ‘ |
| 31 | + # μ΄κΈ°κ° μ€μ : |
| 32 | + # - 첫 λ²μ§Έ μ§(μΈλ±μ€ 0)λ§ κ³ λ €ν κ²½μ° nums[0] |
| 33 | + # - λ λ²μ§Έ μ§(μΈλ±μ€ 1)κΉμ§ κ³ λ €ν κ²½μ° μ²« λ²μ§Έ μ§κ³Ό λ λ²μ§Έ μ§ μ€ ν° κ° |
| 34 | + prev2, prev1 = nums[0], max(nums[0], nums[1]) |
| 35 | + |
| 36 | + for i in range(2, len(nums)): |
| 37 | + # λ μ νμ§ μ€ λ κΈμ‘μ΄ ν° κ²½μ°λ₯Ό κ³μ° |
| 38 | + # 1. iλ²μ§Έ μ§μ νΈμ§ μμ λ: μ΄μ κΉμ§μ μ΅λ κΈμ‘ prev1 |
| 39 | + # 2. iλ²μ§Έ μ§μ νΈ λ: i-1λ²μ§Έ μ§μ νΈ μ μμ |
| 40 | + # i-2λ²μ§Έ μ§κΉμ§μ μ΅λ κΈμ‘ prev2μ νμ¬ μ§μ κΈμ‘ nums[i]λ₯Ό λν¨ |
| 41 | + current = max(prev1, prev2 + nums[i]) |
| 42 | + |
| 43 | + # μ΄μ λ¨κ³μ prev1μ λ€μ λ¨κ³μμ prev2κ°, |
| 44 | + # current κ°μ μλ‘μ΄ prev1μ΄ λ¨ |
| 45 | + prev2, prev1 = prev1, current |
| 46 | + |
| 47 | + # λ§μ§λ§ μ§κΉμ§μ μ΅λ κΈμ‘μΈ prev1 λ°ν |
| 48 | + return prev1 |
0 commit comments