[アルゴリズム:グリディ]#2839砂糖送り


🔗 質問元:https://www.acmicpc.net/problem/2839
📃 質問する
尚根は最近砂糖工場で砂糖を送った.尚根は今、キャンディ屋に正確にNキロの砂糖を送る.砂糖工場で生産された砂糖は袋に入っている.袋は3キロ袋と5キロ袋があります.
尚根は面倒なので、できるだけ少ない袋を持っていきたいと思っています.例えば、18キロの砂糖を配達する必要がある場合は、3キロの袋を6つ持ってもいいですが、5キロと3キロを3つ配達すれば、より少ない数の袋を配達することができます.
尚根がNキロの砂糖を正確に配達する必要がある場合は、いくつかの袋を持っていくことができるかどうかを確認するプログラムを作成してください.
📝 入力
1行目はNです.(3 ≤ N ≤ 5000)
🧾 しゅつりょく
上から渡された袋の最低個数を出力します.もし、N kgを正確に作れなかったら、-1を出力します.
💡 私の解き方
N = int(input(입력 : ))
cnt = 0
while N >= 0 :
    if N % 5 == 0 :
        cnt += N // 5
        print(cnt)
        break
    else :
        N -= 3
        cnt += 1
else : 
    print(-1)
入力された糖の重量(N)がif節の条件に合致する前に、3を減算し、封筒の数(cnt)を1個減算する.Nが0になるまで繰り返し、while文の条件を満たさない場合は-1を出力します.
nの値を5で割った場合、その後に対応する個数を加えてループを出力して停止する.