[μκ³ λ¦¬μ¦] 그리λ(Greedy) μκ³ λ¦¬μ¦μ΄λ
1. 그리λ μκ³ λ¦¬μ¦(νμλ²)μ΄λ?
그리λ μκ³ λ¦¬μ¦(νμλ²)μ νμ¬ μν©μμ μ§κΈ λΉμ₯ μ’μ κ²λ§ κ³ λ₯΄λ λ°©λ²μ μλ―Έν©λλ€.
μ½κ² λ§νλ©΄ νμμ€λ½κ² μ΅κ³ μ μ νλ§ μ·¨νλ κ²μ λ§ν©λλ€.
- μΌλ°μ μΈ κ·Έλ¦¬λ μκ³ λ¦¬μ¦μ λ¬Έμ λ₯Ό νκΈ° μν μ΅μνμ μμ΄λμ΄λ₯Ό λ μ¬λ¦΄ μ μλ λ₯λ ₯μ μꡬν©λλ€.
- 그리λ ν΄λ²μ κ·Έ μ λΉμ± λΆμμ΄ μ€μν©λλ€.
λ¨μν κ°μ₯ μ’μ 보μ΄λ κ²μ λ°λ³΅μ μΌλ‘ μ νν΄λ μ΅μ μ ν΄λ₯Ό ꡬν μ μλμ§ κ²ν ν©λλ€.
βοΈ κ·Έλ¦¬λ μκ³ λ¦¬μ¦μ νμ μ΅μ μ ν΄λ₯Ό 보μ₯νμ§ μμ΅λλ€.
- μΌλ°μ μΈ μν©μμ 그리λ μκ³ λ¦¬μ¦μ μ΅μ μ ν΄λ₯Ό 보μ₯ν μ μμ λκ° λ§μ΅λλ€.
- νμ§λ§ μ½λ© ν μ€νΈμμμ λλΆλΆμ 그리λ λ¬Έμ λ νμλ²μΌλ‘ μ»μ ν΄κ° μ΅μ μ ν΄κ° λλ μν©μμ, μ΄λ₯Ό μΆλ‘ ν μ μμ΄μΌ ν리λλ‘ μΆμ λ©λλ€.
νΈλ¦¬μμ κ²½λ‘λ₯Ό μ΄λνλ©΄μ κ° λ Έλμ ν©μ΄ μ΅λκ° λλ κ²½μ°λ₯Ό μκ°ν΄λ΄ λλ€.


μ€μ κ° λ Έλμ ν©μ΄ μ΅λκ° λλ κ²½μ°λ μΌμͺ½κ³Ό κ°μ΅λλ€. νμ§λ§, 그리λ μκ³ λ¦¬μ¦μ μ¬μ©νμ¬ λ§€μκ° μ΅μ μ κ°μ μ ννκ² λλ€λ©΄ μ€λ₯Έμͺ½κ³Ό κ°μ κ²½λ‘κ° μ€μ λκ³ μ΅μ μ ν΄κ° μλλλ€.
μ΄μ²λΌ 그리λ μκ³ λ¦¬μ¦μ νμ μ΅μ μ ν΄λ₯Ό 보μ₯νλ κ²μ μλμ§λ§ μλκ° κ΅μ₯ν λΉ λ₯΄κΈ° λλ¬Έμ μμ£Ό μ¬μ©λ©λλ€. κ·Έλ κΈ° λλ¬Έμ νμ μ΅μ μ ν΄λ₯Ό 보μ₯νλλ‘ νΉμν 쑰건μ λ§μ‘±μμΌμ€μΌ ν©λλ€.
2. <λ¬Έμ > κ±°μ€λ¦λ
λΉμ μ μμμ μ κ³μ°μ λμμ£Όλ μ μμ λλ€. μΉ΄μ΄ν°μλ κ±°μ€λ¦λμΌλ‘ μ¬μ©ν 500μ, 100μ, 50μ, 10μμ§λ¦¬ λμ μ΄ λ¬΄νν μ‘΄μ¬νλ€κ³ κ°μ ν©λλ€. μλμκ² κ±°μ¬λ¬ μ£Όμ΄μΌ ν λμ΄ NμμΌ λ κ±°μ¬λ¬ μ£Όμ΄μΌ ν λμ μ μ΅μ κ°μλ₯Ό ꡬνμΈμ. λ¨, κ±°μ¬λ¬ μ€μΌ ν λ Nμ νμ 10μ λ°°μμ λλ€.
μ΅μ μ ν΄λ₯Ό λΉ λ₯΄κ² ꡬνκΈ° μν΄μλ κ°μ₯ ν° νν λ¨μλΆν° λμ κ±°μ¬λ¬ μ£Όλ©΄ λ©λλ€.
- Nμμ κ±°μ¬λ¬ μ€μΌ ν λ, κ°μ₯ λ¨Όμ 500μμΌλ‘ κ±°μ¬λ¬ μ€ μ μμ λ§νΌ κ±°μ¬λ¬ μ€λλ€.
μ΄νμ 100μ, 500μ, 10μμ§λ¦¬ λμ μ μ°¨λ‘λλ‘ κ±°μ¬λ¬ μ€ μ μμ λ§νΌ κ±°μ¬λ¬ μ£Όλ©΄ λ©λλ€. - N = 1,260μΌ λμ μμλ₯Ό νμΈν΄ λ΄ μλ€.
STEP 0)
νν λ¨μ | 500 | 100 | 50 | 10 |
μλμ΄ λ°μ κ°μ | 0 | 0 | 0 | 0 |
STEP 1)
νν λ¨μ | 500 | 100 | 50 | 10 |
μλμ΄ λ°μ κ°μ | 2 | 0 | 0 | 0 |
STEP 2)
νν λ¨μ | 500 | 100 | 50 | 10 |
μλμ΄ λ°μ κ°μ | 2 | 2 | 0 | 0 |
STEP 3)
νν λ¨μ | 500 | 100 | 50 | 10 |
μλμ΄ λ°μ κ°μ | 2 | 2 | 1 | 0 |
STEP 4)
νν λ¨μ | 500 | 100 | 50 | 10 |
μλμ΄ λ°μ κ°μ | 2 | 2 | 1 | 1 |
κ²°λ‘ μ μΌλ‘ μλμ λμ μ μ΅μ κ°μλ₯Ό λ°κ³ μ΅μ μ ν΄λ₯Ό λμΆν©λλ€.
κ°μ₯ ν° νν λ¨μλΆν° λμ κ±°μ¬λ¬ μ£Όλ κ²μ΄ μ΅μ μ ν΄λ₯Ό 보μ₯νλ μ΄μ κ° λ¬΄μμΌκΉ?
- κ°μ§κ³ μλ λμ μ€μμ ν° λ¨μκ° νμ μμ λ¨μμ λ°°μμ΄λ―λ‘ μμ λ¨μμ λμ λ€μ μ’ ν©ν΄ λ€λ₯Έ ν΄κ° λμ¬ μ μκΈ° λλ¬Έμ λλ€. λ§μ½μ 800μμ κ±°μ¬λ¬ μ£Όμ΄μΌ νλλ° ννλ¨μκ° 500μ, 400μ, 100μμ΄λΌλ©΄ μ΅μ μ ν΄λ₯Ό 보μ₯ν μ μμ΅λλ€.
그리λ μκ³ λ¦¬μ¦ λ¬Έμ μμλ μ΄μ²λΌ λ¬Έμ νμ΄λ₯Ό μν μ΅μνμ μμ΄λμ΄λ₯Ό λ μ¬λ¦¬κ³ μ΄κ²μ΄ μ λΉνμ§ κ²ν ν μ μμ΄μΌ ν©λλ€.
μ½λ νμ΄
n = 1260
cnt = 0
# ν° λ¨μμ ννλΆν° μ°¨λ‘λλ‘ νμΈνκΈ°
arr = [500, 100, 50, 10]
for i in arr:
cnt = cnt + (n // i) # ν΄λΉ ννλ‘ κ±°μ¬λ¬ μ€ μ μλ λμ μ κ°μ μΈκΈ°
n = n % i # κ±°μ¬λ¬μ£Όκ³ λ¨μ λλ¨Έμ§
print(cnt)
μκ° λ³΅μ‘λ
- ννμ μ’ λ₯κ° KλΌκ³ ν λ, μμ€μ½λμ μκ° λ³΅μ‘λλ O(K)μ λλ€.
- μ΄ μκ³ λ¦¬μ¦μ μκ° λ³΅μ‘λλ κ±°μ¬λ¬μ€μΌ νλ κΈμ‘κ³Όλ 무κ΄νλ©°, λμ μ μ΄ μ’ λ₯μλ§ μν₯μ λ°μ΅λλ€.