https://www.acmicpc.net/problem/2839
2839λ²: μ€ν λ°°λ¬
μκ·Όμ΄λ μμ¦ μ€ν곡μ₯μμ μ€νμ λ°°λ¬νκ³ μλ€. μκ·Όμ΄λ μ§κΈ μ¬νκ°κ²μ μ€νμ μ ννκ² Nν¬λ‘κ·Έλ¨μ λ°°λ¬ν΄μΌ νλ€. μ€ν곡μ₯μμ λ§λλ μ€νμ λ΄μ§μ λ΄κ²¨μ Έ μλ€. λ΄μ§λ 3ν¬λ‘κ·Έ
www.acmicpc.net
μμ΄λμ΄
1. 5kgλ΄μ§μ μ€νμ λ΄μ μ μλ λ§νΌ λ΄λλ€.
2. λ¨μ μ€νμ μμ΄ 3kgμΌλ‘ λλμ΄λ¨μ΄μ ΈμΌλ§ 3kg λ΄μ§μ λ΄μμ λ°°λ¬μ΄ κ°λ₯νλ€.
λ°λΌμ λ¨μ μ€νμ μμ΄ 3μΌλ‘ λλμ΄λ¨μ΄μ§μ§ μμΌλ©΄, 5kgλ΄μ§λ‘λΆν° λ€μ μ€νμ λΆλλ€. (λλ리기)
3-1. λ¨μ μ€νμ μμ΄ 3kgμΌλ‘ λλμ΄λ¨μ΄μ§κ² λλ μκ°μ΄ μ€λ©΄, λ¨μ μ€νμ 3kg λ΄μ§μ λͺ¨λ λλ λ΄λλ€.
3-2. λͺ¨λ μ€νμ λ€ λΆμ΄λ 3kgμΌλ‘ λλμ΄λ¨μ΄μ§μ§ μκ² λλ©΄ -1μ μΆλ ₯νλ€.
μ μΆμ½λ (python)
n = int(input())
answer = 0
# 5kgμ§λ¦¬ λ΄μ§μ λ΄κΈ°
if n//5 > 0:
answer += n//5
n %= 5
# λ¨μ μ€νμ μμ΄ 3μΌλ‘ λλμ΄λ¨μ΄μ§λλ‘ μ‘°μ νκΈ°
while n%3 != 0 and answer > 0:
answer -= 1
n += 5
# 3kgμ§λ¦¬ λ΄μ§μ λ΄κΈ°
if n//3 > 0:
answer += n//3
n %= 3
# κ²°κ³Ό μΆλ ₯
if n > 0:
print(-1)
else:
print(answer)
λ€λ₯Έ μ¬λλ€ νμ΄
λ΄ νμ΄κ° μ’ μκΈ΄ κ² κ°κΈ°λ ν΄μ λ€λ₯Έ μ¬λλ€ μ½λ μ¬λ¬ κ°λ₯Ό ꡬ경ν΄λ³΄μλ€.
β 그리λ λ°©λ²μΌλ‘ νΌ μ¬λλ€μ΄ κ°μ₯ λ§μλ€.
nμ 5λ‘ λλλ€ - 5λ‘ λλμ΄λ¨μ΄μ§μ§ μμΌλ©΄ μ΄ λ¬΄κ²μμ 3μ λΉΌμ€λ€ - μ΄ λ¬΄κ²κ° 0λ³΄λ€ μκ±°λ κ°μμ§λ©΄ 루νλ₯Ό νμΆ - κ²°κ³Ό μΆλ ₯
β λ, λλ dpλ μκ°νμ§ λͺ»νλλ° dpλ‘ νΌ μ¬λλ€λ κ½€ λ§μλ€.
1, 2, 3, 4, 5kgμ λ§λλ μ΅μ λ΄μ§μλ κ°κ° 0, 0, 1, 0, 1 (0μ λ§λ€ μ μλ€λ λ») μ΄λ€.
dpλ°°μ΄μ μ΄λ κ² μ΄κΈ°νμμΌλκ³ ,
6λΆν° μμν΄μ Nkgμ λ§λλ μ΅μ λ΄μ§μλ₯Ό bottom-up λ°©μμΌλ‘ κ³μ°ν΄λκ°λ λ°©λ²μ΄μλ€.
'μκ³ λ¦¬μ¦ λ¬Έμ νμ΄ > Greedy' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] λ§μΉ νκΈ° (0) | 2023.05.25 |
---|---|
[νλ‘κ·Έλλ¨Έμ€]체μ‘볡 (0) | 2023.05.24 |
[μ΄μ½ν ] λ§λ€ μ μλ κΈμ‘ (0) | 2023.03.26 |
[μ΄μ½ν ] λ³Όλ§κ³΅ κ³ λ₯΄κΈ° (0) | 2023.03.25 |
[λ°±μ€]1138λ²: ν μ€λ‘ μκΈ° (0) | 2023.03.18 |