|
| 1 | +''' |
| 2 | +λ¬Έμ μ μλ |
| 3 | +μ΄ λ¬Έμ λ λ°°μ΄μμ μ°μλ λΆλΆ λ°°μ΄μ κ³±μ΄ μ΅λκ° λλ κ°μ μ°Ύλ λ¬Έμ μ. |
| 4 | +μμκ° μκΈ° λλ¬Έμ λ¨μν μ΅λκ°λ§ μΆμ νλ©΄ μ λκ³ , λμμ μ΅μκ°λ μΆμ ν΄μΌ ν¨. |
| 5 | +
|
| 6 | +ν΅μ¬ ν¬μΈνΈ |
| 7 | +μμ Γ μμ = μμ (ν° μμκ° λ μ μμ) |
| 8 | +μμ Γ μμ = μμ (μμμ§) |
| 9 | +0μ΄ μμΌλ©΄ κ³±μ΄ 0μ΄ λ¨ |
| 10 | +
|
| 11 | +ν΄κ²° λ°©λ² |
| 12 | +λμ νλ‘κ·Έλλ°μ μ¬μ©νλ, μ΅λκ°κ³Ό μ΅μκ°μ λμμ μΆμ : |
| 13 | +
|
| 14 | +μ΅λκ°: μμ κ²°κ³Όλ₯Ό μν΄ |
| 15 | +μ΅μκ°: μμκ° λμ€μ μμλ‘ λ°λ κ°λ₯μ±μ μν΄ |
| 16 | +
|
| 17 | +μκ° λ³΅μ‘λ: O(n) |
| 18 | +λ°°μ΄μ ν λ²λ§ μννλ―λ‘ O(n) |
| 19 | +κ° μμμμ μμ μκ°μ μ°μ°λ§ μν |
| 20 | +
|
| 21 | +κ³΅κ° λ³΅μ‘λ: O(1) |
| 22 | +μΆκ° λ°°μ΄μ μ¬μ©νμ§ μμ |
| 23 | +λͺ κ°μ λ³μλ§ μ¬μ©νλ―λ‘ μμ κ³΅κ° |
| 24 | +''' |
| 25 | + |
| 26 | +class Solution: |
| 27 | + def maxProduct(self, nums: List[int]) -> int: |
| 28 | + # λΉ λ°°μ΄ μ²λ¦¬ |
| 29 | + if not nums: |
| 30 | + return 0 |
| 31 | + |
| 32 | + # 첫 λ²μ§Έ μμλ‘ λͺ¨λ κ°λ€μ μ΄κΈ°ν |
| 33 | + max_product = nums[0] # μ 체 μ΅λκ° |
| 34 | + current_max = nums[0] # νμ¬ μμΉκΉμ§μ μ΅λ κ³± |
| 35 | + current_min = nums[0] # νμ¬ μμΉκΉμ§μ μ΅μ κ³± |
| 36 | + |
| 37 | + # λ λ²μ§Έ μμλΆν° λ°°μ΄μ μννλ©° νμ¬ μ«μλ₯Ό μ μ₯ |
| 38 | + for i in range(1, len(nums)): |
| 39 | + num = nums[i] |
| 40 | + |
| 41 | + # νμ¬ μ«μκ° μμμΌ κ²½μ°λ₯Ό λλΉν΄ maxμ minμ μμ μ μ₯ |
| 42 | + temp_max = current_max |
| 43 | + |
| 44 | + # μλ‘μ΄ μ΅λκ° κ³μ°: μ΅λκ°κ³Ό μ΅μκ° λͺ¨λ μλμ 3κ° μ€μμ λμ¬ μ μμ |
| 45 | + # num : νμ¬ μ«μλΆν° μλ‘ μμ |
| 46 | + # temp_max * num : νμ¬μ«μ Γ μ΄μ μ΅λκ° |
| 47 | + # current_min * num : νμ¬μ«μ Γ μ΄μ μ΅μκ°(μμ*μμ=μμ κ°λ₯μ± λλ¬Έμ) |
| 48 | + current_max = max(num, temp_max * num, current_min * num) |
| 49 | + |
| 50 | + # μλ‘μ΄ μ΅μκ° κ³μ°: λμ€μ μμμ κ³±ν΄μ Έμ ν° μμκ° λ κ°λ₯μ±μ μν΄ |
| 51 | + # νμ¬ μ«μ, νμ¬μ«μΓμ΄μ μ΅λ, νμ¬μ«μΓμ΄μ μ΅μ μ€ μ΅μ |
| 52 | + current_min = min(num, temp_max * num, current_min * num) |
| 53 | + |
| 54 | + # μ§κΈκΉμ§μ μ 체 μ΅λκ°κ³Ό νμ¬ μ΅λκ°μ λΉκ΅νμ¬ μ
λ°μ΄νΈ |
| 55 | + max_product = max(max_product, current_max) |
| 56 | + |
| 57 | + return max_product |
| 58 | + |
| 59 | + |
0 commit comments