μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- μ 리νΈλ¦¬νΈ
- μ€λΈμ
- μλ°
- μν
- JavaScript
- μΉνΌλΈλ¦¬μ±
- λ°μν
- μ€λΌν΄
- μλ°μ€ν¬λ¦½νΈ
- html
- μΉ΄νλκ°
- css
- Python
- κ°λ°
- λ°°μμ λ°°μ
- λ μ
- νμ΄μ¬
- λ°μ΄ν°λ² μ΄μ€
- μ½λ©
- κ°μ΄ν μ’ λκ°λΉ
- Java
- νλ‘κ·Έλλ°
- μνμ£Ό
- κΉλ―Έκ²½μλ§νμμ
- Kλ°°ν°λ¦¬λ 볼루μ
- νμ²μ 리νΈλ¦¬νΈ
- μ±
- database
- ν°μ€ν 리μ±λ¦°μ§
- λκ°
- Today
- Total
JiYoung Dev π₯
[νμ΄μ¬] μκ³ λ¦¬μ¦ ν¨λ¬λ€μ : Dynamic Programming μ°μ΅λ¬Έμ λ³Έλ¬Έ
[νμ΄μ¬] μκ³ λ¦¬μ¦ ν¨λ¬λ€μ : Dynamic Programming μ°μ΅λ¬Έμ
Shinjio 2023. 2. 28. 15:442023.02.28 μ½λμ νμ΅λ΄μ©
π Dynamic Programming μ°μ΅λ¬Έμ
κ°μ§κ³ μλ μκΌΌλ¬κΌΌμΌλ‘ λ²μ΄λ€μΌ μ μλ μ΅λ μμ΅ κ΅¬νκΈ°
price_list : κ°μλ³ κ°κ²©μ΄ μ 리λμ΄ μλ 리μ€νΈ
count : ν맀ν μκΌΌλ¬κΌΌ κ°μ
cache : κ°μλ³ μ΅λ μμ΅μ΄ μ μ₯λμ΄ μλ μ¬μ
π memoizationμΌλ‘ λ¬Έμ νκΈ°
β base case : 0κ° νμμ λ νΉμ 1κ° νμμ λμλ price_listμ κ°κ²© κ·Έλλ‘ μΆλ ₯
β‘ recursive case : μ΅λ μμ΅ κ΅¬νκΈ°
1κ° νμμ λ μμ΅ : 100
2κ° νμμ λ λμ¬ μ μλ μμ΅ : (1κ°, 1κ°) νμμ λ νΉμ (2κ°, 0κ°) νμμ λ
3κ° νμμ λ λμ¬ μ μλ μμ΅ : (1κ°, 2κ°) νμμ λ νΉμ (3κ°, 0κ°) νμμ λ
4κ° νμμ λ λμ¬ μ μλ μμ΅ : (1κ°, 3κ°) νμμ λ νΉμ (2κ°, 2κ°) νμμ λ νΉμ (0κ°, 4κ°) νμμ λ
5κ° νμμ λ λμ¬ μ μλ μμ΅ : (1κ°, 4κ°) νμμ λ νΉμ (2κ°, 3κ°) νμμ λ νΉμ (0κ°, 5κ°) νμμ λ
...
nκ° νμμ λ λμ¬ μ μλ μμ΅ : (1κ°, n-1κ°) & (2κ°, n-2κ°) & (3κ°, n-3κ°) & ( n // 2κ°, n - n // 2κ°) & (0κ°, nκ°)
for i in range(1, n // 2 + 1):
profit = max(max_profit_memo(price_list, i, cache) + max_profit_memo(price_list, n - i, cahce)
#μ¬κΈ°μ 0κ°, nκ° ν맀νμ λ λμ€λ μμ΅μ νμΈ μνμ
μ¬κΈ°μ 0κ°, nκ° νλ§€κ° κ°λ₯ν κ²½μ°λ nμ΄ price_listμ 리μ€νΈ κ°μλ³΄λ€ μκ±°λ κ°μ κ²½μ°μλ§ κ°λ₯
if n < len(price_list):
profit = price_list[n]
else:
profit = 0
μμ κ²½μ°μ μλ₯Ό λͺ¨λ νμΈνμ¬ κ°μ₯ ν° κ°μ μ΅λ μμ΅μΌλ‘ μ μ₯
profit = max(profit, max_profit_memo(price_list, i, cache) + max_profit_memo(price_list, n - i, cahce))
π TabulationμΌλ‘ λ¬Έμ νκΈ°
λ°λ³΅λ¬Έ μ¬μ©νμ¬ λ¦¬μ€νΈ μ±μ°κΈ°
βΌβΌβΌ λ΄κ° μμ±ν μ½λ βΌβΌβΌ
μ°¨μ΄μ : for λ°λ³΅λ¬Έμ μ¬μ©νμ§ μκ³ λ°λ‘ maxκ°μ κ³μ°ν΄μ 리μ€νΈμ μ μ₯
λ΅μ λ§μ§λ§ for λ°λ³΅λ¬Έμ μ¬μ©νμ§ μμΌλ©΄ ν릴 μλ μμΌλ―λ‘ for λ°λ³΅λ¬Έμ μ¬μ©ν΄μ 1, i -1λΆν° 2//n, 1 - 2//nκΉμ§μ κ²½μ°μ μ μ€ κ°μ₯ ν° κ°μ μ μ₯νλλ‘ ν΄μΌν¨
'python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[python] forλ¬Έ - κ±°κΎΈλ‘ λ°λ³΅ (0) | 2023.08.23 |
---|---|
[νμ΄μ¬] μκ³ λ¦¬μ¦ ν¨λ¬λ€μ : 그리λ μκ³ λ¦¬μ¦ Greedy Algorithm (0) | 2023.03.01 |
[νμ΄μ¬] μκ³ λ¦¬μ¦ ν¨λ¬λ€μ : Dynamic Programming (0) | 2023.02.27 |
[νμ΄μ¬] μκ³ λ¦¬μ¦ ν¨λ¬λ€μ : Divide and Conquer (ν©λ³ μ λ ¬, ν΅ μ λ ¬) (0) | 2023.02.26 |
[νμ΄μ¬] μκ³ λ¦¬μ¦ ν¨λ¬λ€μ : Brute Force (0) | 2023.02.24 |