π± λ¬Έμ
π‘ μ€λͺ
ν΄λΉ λ¬Έμ λ λ€μ΄λλ―Ή νλ‘κ·Έλλ° λλ 그리λ μκ³ λ¦¬μ¦μ μꡬνλ λ¬Έμ μ λλ€.
μ°μ λ€μ΄λλ―Ή νλ‘κ·Έλλ°μΌλ‘ νμ΄κ° κ°λ₯νμ§ νμΈνκΈ° μν΄μλ 2κ°μ§ μ‘°κ±΄μ΄ μμ΅λλ€.
1. μ΅μ λΆλΆ ꡬ쑰 (Optimal substructure)
2. μ€λ³΅ λΆλΆ λ¬Έμ (Overlapping subproblems)
μ¦, ν° λ¬Έμ μν©μ μκ² λλμ΄μ ν΄κ²°νκ³ μ ν λ, μ€λ³΅λλ μν©μ΄ λ°μ νλ©°, μκ² λλ μ§ λ¬Έμ λ₯Ό λ°νμΌλ‘ ν° λ¬Έμ λ₯Ό ν΄κ²°ν μ μλκ°λ₯Ό μκ°ν΄λ³΄μμΌ ν©λλ€.
μ°μ μ€νμ΄ 3kg λλ 5kgμΈ κ²½μ°, κ°κ° 1κ°μ λ΄μ§λ§ κ°μ Έκ°λ μ°Έμ΄ λλ κ°μ₯ μμ λ¬Έμ μν©μ λλ€.
κ·Έλ λ€λ©΄ κ·Έ λ€μμΌλ‘ ν° μ«μμΈ 6kgμ κ°μ Έκ°λ €λ©΄ μ΄λ»κ² ν΄μΌ ν κΉμ?
3kg + 3kg μΌλ‘ 6kgλ₯Ό λ§λλ κ²μ λλ€.
μ¬κΈ°μ μ μ μλ μ¬μ€μ 6kg(ν° λ¬Έμ )λ₯Ό 2κ°μ 3kg(μ€λ³΅ λΆλΆ λ¬Έμ ) μΌλ‘ λλμ΄ μκ°ν΄λ³Ό μ μλ€λ μ μ λλ€.
λν κ°κ°μ λΆλΆ λ¬Έμ λ€μ΄ 3kg(1ν)λ‘ μ΅μ μ ν΄(μ΅μ λΆλΆ ꡬ쑰)λ₯Ό κ°μ§κ³ μμ΅λλ€.
μλ νμ΄λ λ€μ΄λλ―Ή νλ‘κ·Έλλ° μΌλ‘ ν΄κ²°ν μμ€μ½λμ λλ€.
βοΈ μμ€μ½λ
#-*- coding:utf-8 -*-
import sys
INF = sys.maxsize
input = sys.stdin.readline
MIS = lambda: map(int, input().rstrip().split())
n = int(input())
# iKGμ λν μ΅μ λ°°λ¬ νμλ₯Ό κΈ°λ‘
# nμ λ²μλ 3 ~ 5000 μ¬μ΄
dp = [INF] * (5001)
# λ§λ€μ΄μ§ μ μλ κ²½μ°μ λν΄μλ 무νκ°μΌλ‘ μ΄κΈ°ν
# μ΅μ μν©μ λν΄ λ―Έλ¦¬ μ΄κΈ°ν
dp[3], dp[4], dp[5] = (1, INF, 1)
# iKGμ λ°°λ¬νλ νμ =
# iKGμ κΈ°μ‘΄ λ°°λ¬ νμμ, (i-3)KG λλ (i-5)KGμμ 1νλ₯Ό λνμ¬ μ΅μ κ°μΌλ‘ μ¬ν λΉ
for i in range(6, n+1):
dp[i] = min(dp[i], dp[i-3] + 1, dp[i-5] + 1)
# λ°°λ¬ν μ μλ κ²½μ°λ INF κ°μ΄ λ³νμ§ μμΌλ―λ‘ -1
# λ°°λ¬ κ°λ₯ν κ²½μ°μλ μ΅μ λ°°λ¬ νμλ₯Ό μΆλ ₯
print(dp[n]) if dp[n] != INF else print(-1)
github : https://github.com/tmdgh1592
'λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€ - Python] 2579λ² : κ³λ¨ μ€λ₯΄κΈ° (1) | 2022.09.28 |
---|---|
[λ°±μ€ - Python] 1697λ² : μ¨λ°κΌμ§ (0) | 2022.09.27 |
[λ°±μ€ - Python] 2671λ² : μ μν¨μλ³ (0) | 2022.09.14 |
[λ°±μ€/νμ΄μ¬] 1004λ² λ¬Έμ 'μ΄λ¦° μμ' (14) | 2021.06.11 |
[λ°±μ€/νμ΄μ¬] 1003λ² λ¬Έμ 'νΌλ³΄λμΉ ν¨μ' (16) | 2021.06.10 |