- 그리λ μκ³ λ¦¬μ¦μ νμ μκ³ λ¦¬μ¦ λλ μμ¬μμ΄ μκ³ λ¦¬μ¦μ΄λΌκ³ λ λΆλ¦½λλ€.
λ―Έλλ₯Ό μκ°νμ§ μκ³ κ° λ¨κ³μμ κ°μ₯ μ΅μ μ μ νμ νλ κΈ°λ²
μ λλ€.- κ·Έλ κΈ° λλ¬Έμ μ΅μ’ μ μΈ κ²°κ³Ό λμΆμ λν μ΅μ ν΄λ₯Ό 보μ₯ν΄μ£Όλ κ²μ μλλλ€.
그리λ μκ³ λ¦¬μ¦μ κ° λ¨κ³μμ μ΅μ μ μ ν μμλ₯Ό λ³΄κ² μ΅λλ€.
λ¬Έμ ) μμλ Έλλ‘λΆν° μμνμ¬ κ±°μ³κ°λ λ Έλ κ°μ ν©μ΄ μ΅λμΈ κ²½μ°μ κ²°κ³Όκ°μ ꡬνμμ€.
- μ΅μ μ ν΄μ 그리λμ κ²°κ³Ό κ°μ΄ λ¬λΌμ§λ κ±Έ λ³Ό μ μμ΅λλ€.
- μ°λ¦¬λ κ°μ₯ μ’μ κ²°κ³Όκ°
'μμ - 6 - 56'
μ κ±°μΉλ κ²½λ‘κ° κ°μ₯ ν° μλ₯Ό λμΆνλ κ²μ μ μ μμ΅λλ€. - νμ§λ§ 그리λ μκ³ λ¦¬μ¦μ μ¬μ©νλ©΄ μμ λ ΈλμμλΆν° κ°μ₯ ν° μμΈ '20'μ μ ννκ² λ©λλ€.
- κ²°λ‘ μ μΌλ‘ 그리λ μκ³ λ¦¬μ¦μ
'μμ - 20 - 17'
λ₯Ό κ°μ₯ μ΅λμΈ κ²½μ°λ‘ μ ννκ² λ©λλ€.
μ΄μ²λΌ 그리λ μκ³ λ¦¬μ¦μ νμ¬ μν©μμ κ°μ₯ μ’μ κ²°κ³Όλ₯Ό μ ννλ λ°©μμ
λλ€.
μ΄λ° μ΄μ λλ¬Έμ 그리λ μκ³ λ¦¬μ¦μ μ¬μ©νλ λ¬Έμ λ κ°λ¨ν λ¬Έμ λ‘ λμ¬ κ°λ₯μ±μ΄ λ§€μ° ν½λλ€.
그리λ μκ³ λ¦¬μ¦μΌλ‘ μ΅μ ν΄λ₯Ό λμΆνκΈ° μν΄μλ λκ°μ§ 쑰건μ λ§μ‘±ν΄μΌ ν©λλ€.
- νμμ μ ν μμ± (greedy choice property)
νμμ μΈ μ νμ΄ νμ μμ νλ€λ κ²μ΄ 보μ₯λλ€λ μλ―Έμ λλ€.
μ¦, 그리λν μ νμ΄ μΈμ λ μ΅μ ν΄λ₯Ό 보μ₯ν΄μΌ ν©λλ€. - μ΅μ λΆλΆ ꡬ쑰 (optimal substructure)
λΆλΆ μ΅μ ν΄(Local optimum)λ€μ΄ λͺ¨μ¬ μ 체 μ΅μ ν΄(Global optimum)λ₯Ό ꡬν μ μλ κ²½μ°μ
λλ€.
μ¦, μ 체 λ¬Έμ κ° μ¬λ¬λΆλΆ λ¬Έμ λ‘ λΆν λλ©°, μ΄ λ¨κ³ νλνλμ λν μ΅μ ν΄κ° λμΆλμ΄μΌ νλ€λ μλ―Έμ λλ€.
λ¬Έμ
νμ΄
μ
λ ₯μΌλ‘ λ€μ΄μ¨ λμ λ€μ μ¬μ©νμ¬ Kμμ λ§λλλ° νμν λμ κ°μμ μ΅μκ°
μ μΆλ ₯νλ κ²μ΄ λͺ©μ μ
λλ€.
- i >= 2 μΈ κ²½μ°μ Aiλ Ai-1μ λ°°μμ΄κΈ° λλ¬Έμ 그리λ μκ³ λ¦¬μ¦μ μ¬μ©νλ λ¬Έμ μ λλ€.
κ°μ₯ ν° λμ λΆν° μμν΄μ λͺ«μ μΉ΄μ΄νΈν΄μ£Όκ³ , λλ¨Έμ§ λμ μ λ΄λ¦Όμ°¨μμΌλ‘ λ°λ³΅
ν©λλ€.- μ΄λ Kκ° 0μ΄ λλ©΄, λ°λ³΅λ¬Έμ λΉ μ Έλμ΅λλ€.
λμ | K | λμ μ μ | λλ¨Έμ§ |
---|---|---|---|
50000 | 4200 | 0 | 4200 |
10000 | 4200 | 0 | 4200 |
5000 | 4200 | 0 | 4200 |
1000 | 4200 | 4 |
200 |
500 | 200 | 0 | 200 |
100 | 200 | 2 |
0 |
50 | 0 | - | - |
10 | - | - | - |
5 | - | - | - |
1 | - | - | - |
n, k = map(int, input().split())
money = []
count = 0
for i in range(n):
m = int(input())
money.append(m)
for i in reversed(money):
if i <= k:
count += k // i
k = k % i
print(count)