μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
- μ½λ©
- κΉλ―Έκ²½μλ§νμμ
- Python
- ν°μ€ν 리μ±λ¦°μ§
- Java
- λ μ
- κ°λ°
- database
- κ°μ΄ν μ’ λκ°λΉ
- JavaScript
- λ°μ΄ν°λ² μ΄μ€
- μν
- νμ²μ 리νΈλ¦¬νΈ
- μ 리νΈλ¦¬νΈ
- μΉ΄νλκ°
- νλ‘κ·Έλλ°
- λκ°
- μνμ£Ό
- λ°°μμ λ°°μ
- μΉνΌλΈλ¦¬μ±
- μ±
- λ°μν
- μλ°
- νμ΄μ¬
- μ€λΌν΄
- μλ°μ€ν¬λ¦½νΈ
- Kλ°°ν°λ¦¬λ 볼루μ
- html
- css
- μ€λΈμ
- Today
- Total
JiYoung Dev π₯
[νμ΄μ¬] μκ³ λ¦¬μ¦ ν¨λ¬λ€μ : 그리λ μκ³ λ¦¬μ¦ Greedy Algorithm λ³Έλ¬Έ
[νμ΄μ¬] μκ³ λ¦¬μ¦ ν¨λ¬λ€μ : 그리λ μκ³ λ¦¬μ¦ Greedy Algorithm
Shinjio 2023. 3. 1. 18:052023.03.01 μ½λμ νμ΅λ΄μ©
π 그리λ μκ³ λ¦¬μ¦(Greedy Algorithm)
greedyλ νμμ΄λΌλ λ».
그리λ μκ³ λ¦¬μ¦(Greedy Algorithm)μ λ―Έλλ₯Ό λ΄λ€λ³΄μ§ μκ³ , λΉμ₯ λμμ 보μ΄λ μ΅μ μ μ νμ νλ λ°©μ
그리λ μκ³ λ¦¬μ¦μ κ°λ¨νκ³ λΉ λ₯΄λ€λ μ₯μ μ΄ μμΌλ μκ°λ§λ€ μ΅μ μ μ νμ νλ κ²½μ° κ·Έ μκ°μ λν΄μλ μ΅μ μ΄μ§λ§, μ΅μ’ μ μΈ λ΅μ λ§λ€μμ λμλ κ·Έ λ΅μ΄ μ΅μ μ΄ μλ μ μμ. μ¦, μ΅μ μ λ΅μ΄ 보μ₯λμ§ μλλ€λ λ¨μ μ΄ μμ.
π 그리λ μκ³ λ¦¬μ¦μ μ¬μ©νλ κ²½μ°
1. λ¬Έμ λ₯Ό ν΄κ²°νλ λ€λ₯Έ μκ³ λ¦¬μ¦μ΄ λ무 λλ €μ μ¬μ©ν μ μλ μμ€μΌ λ
2. μ μ΄λΆν° μ΅μ μ λ΅μ΄ νμ μμ λ μ¬μ©
3. μκ°μ μ΅μ μ μ νμ΄ μ΅μ’ λ΅μμλ μ΅μ μ μ νμ΄ λλ κ²½μ°
3λ²κ³Ό κ°μ΄ 그리λ μκ³ λ¦¬μ¦μ΄ μ΅μ μ λ΅μ ꡬν΄μ£Όλ κ²½μ°μ 쑰건 2κ°μ§
1. μ΅μ λΆλΆ ꡬ쑰(optimal substructure)λ₯Ό κ°μΆκ³ μλ€. → μ΄λ 그리λ μκ³ λ¦¬μ¦μ μ¬μ©νλ € ν λμ νμ쑰건
μ΅μ λΆλΆ ꡬ쑰λ₯Ό κ°μ§κ³ μλ€λ κ²μ λΆλΆ λ¬Έμ λ€μ μ΅μ μ λ΅μ μ΄μ©ν΄μ κΈ°μ‘΄ λ¬Έμ μ μ΅μ μ λ΅μ ꡬν μ μλ€λ κ²
2. νμμ μ ν μμ± (greedy choice property) → μ΄λ νμ쑰건μ μλμ§λ§ μ΅μ μ λ΅μ ꡬνκΈ° μν΄μλ λ§μ‘±ν΄μΌ ν¨
κ° λ¨κ³μμμ νμμ€λ¬μ΄ μ νμ΄ μ΅μ’ λ΅μ ꡬνκΈ° μν μ΅μ μ μ νμΈ κ²½μ°
π 그리λ μκ³ λ¦¬μ¦ μ°μ΅λ¬Έμ
β μ΅μ κ°μμ λμ μΌλ‘ λ κ±°μ¬λ¬ μ£ΌκΈ°
βΌβΌβΌ λͺ¨λ² λ΅μ βΌβΌβΌ
βΌβΌβΌ λ΄κ° μμ±ν μ½λ βΌβΌβΌ
μ°¨μ΄μ : sorted λμ sortλ₯Ό μ¬μ©νμκ³ , valueκ°μ μ§μ κ³μ°
κ°μ μ : for λ¬Έμ sorted(coin_list, reverse=True)λ₯Ό λ£μΌλ©΄ μ½λ ν μ€μ΄ μ€μ΄λ€κ³ , valueλ valueμμ coinμ λλ λλ¨Έμ§λ‘ %=λ‘ μ½κ² μμ± κ°λ₯
β ν μ¬λλΉ μΉ΄λ νλμ© λ½μμ λͺ¨λ κ³±νμ λ κ°λ₯ν μ΅λκ³± ꡬνκΈ°
βΌβΌβΌ λͺ¨λ² λ΅μ βΌβΌβΌ
βΌβΌβΌ λ΄κ° μμ±ν μ½λ βΌβΌβΌ
κ°μ ν μ : μ½λλ₯Ό λ 보기 μ’κ³ κ°λ¨νκ² μ€μΌ μ μμΌλ©΄ μ€μ΄κΈ°. max_elementλ κ΅³μ΄ νμν λ³μκ° μλ. λ°λ‘ λμ νμ¬ μμ±νλ κ² λ 보기 μ’μ
β κ°μ₯ μ κ² λ΄λ κ²½μ°μ λ²κΈ ꡬνκΈ°
βΌβΌβΌ λͺ¨λ² λ΅μ βΌβΌβΌ
μ λ ¬λ 리μ€νΈλ₯Ό μλ‘κ² μ μν ν μΈλ±μ€ μμλλ‘ λ°λ³΅λ¬Έ μ§ν
βΌβΌβΌ λ΄κ° μμ±ν μ½λ βΌβΌβΌ
μ°¨μ΄μ : for λ°λ³΅λ¬Έμ μΈλ±μ€κ° μλ μμλ‘ μ§ν. λμ iλ₯Ό λ³μλ‘ μ§μ νμκ³ , λ°λ³΅λ¬Έμμ i += 1μ΄ μ€νλ μ μκ² μμ±νμμ
β κ°μ₯ λ§μ μμ λ΄κΈ°
βΌβΌβΌ λͺ¨λ² λ΅μ βΌβΌβΌ
β course_listλ₯Ό ννμ 1λ² μΈλ±μ€λ₯Ό κΈ°μ€μΌλ‘ μ€λ¦μ°¨μ μ λ ¬
μ λ ¬ 쑰건 μ§μ νκΈ°
νμ΄μ¬μμλ sort()μ sorted()λ₯Ό μ¬μ©νμ¬ μ λ ¬μ ν μ μλλ°, μΈμλ‘ key=lambda x : x[0] λ±μ μ£Όμ΄ μ λ ¬ 쑰건μ μ§μ ν μ μμ. μλμ μ½λμμ sorted(list, key = lambda x : x[1]λ ννμ 1λ² μΈλ±μ€λ₯Ό κΈ°μ€μΌλ‘ μ λ ¬νλ€λ λ»
λν, x : (x[1], x[0]) μ΄λ° μμΌλ‘ μμ±νλ©΄ μ°μ 쑰건과 μ°¨μ 쑰건μ μ§μ ν μ μμ. μμ μλ κ² μ°μ 쑰건
β‘ κ²°κ΄κ°μ 리ν΄νκ³ μ νλ μλ‘μ΄ λ¦¬μ€νΈλ₯Ό μμ±νκ³ λ¦¬μ€νΈμλ λλλ μκ°μ΄ κ°μ₯ μμ ννμ λ£μ΄ λμ
β’ μλ‘ μ λ ¬λ 리μ€νΈμ κ° νν μμλ³λ‘ μλμ 쑰건 νμΈ
βΌβΌβΌ λ΄κ° μμ±ν μ½λ βΌβΌβΌ
μ°¨μ΄μ : λͺ¨λ²λ΅μμμλ forλ°λ³΅λ¬Έμ μΈλ±μ€ λ²νΈκ° μλ μμλ‘ μ§μ νμ¬ μ¬μ©νμμ. μμλ₯Ό μ¬μ©ν κ²½μ° λ κΉλν μ½λ μμ± κ°λ₯. λν, 쑰건μλ λ κ°λ¨νκ² μμ±ν μ μμ.
'python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[python] λ°°μ΄μ κ° μΆκ° (0) | 2023.08.24 |
---|---|
[python] forλ¬Έ - κ±°κΎΈλ‘ λ°λ³΅ (0) | 2023.08.23 |
[νμ΄μ¬] μκ³ λ¦¬μ¦ ν¨λ¬λ€μ : Dynamic Programming μ°μ΅λ¬Έμ (0) | 2023.02.28 |
[νμ΄μ¬] μκ³ λ¦¬μ¦ ν¨λ¬λ€μ : Dynamic Programming (0) | 2023.02.27 |
[νμ΄μ¬] μκ³ λ¦¬μ¦ ν¨λ¬λ€μ : Divide and Conquer (ν©λ³ μ λ ¬, ν΅ μ λ ¬) (0) | 2023.02.26 |