白駿-2839(Python)-砂糖送り


砂糖を送る


質問する


尚根は最近砂糖工場で砂糖を送った.尚根は今、キャンディ屋に正確にNキロの砂糖を送る.砂糖工場で生産された砂糖は袋に入っている.袋は3キロ袋と5キロ袋があります.
尚根は面倒なので、できるだけ少ない袋を持っていきたいと思っています.例えば、18キロの砂糖を配達する必要がある場合は、3キロの袋を6つ持ってもいいですが、5キロと3キロを3つ配達すれば、より少ない数の袋を配達することができます.
尚根がNキロの砂糖を正確に配達する必要がある場合は、いくつかの袋を持っていくことができるかどうかを確認するプログラムを作成してください.

入力


1行目はNです.(3 ≤ N ≤ 5000)

しゅつりょく


上から渡された袋の最低個数を出力します.もし、N kgを正確に作れなかったら、-1を出力します.

コード#コード#


同じ量でも5 kgの袋を多く送るのが有利です.したがって、5に分けて符号化するかどうかが優先される.
適切な袋の組み合わせがない場合は、-1を出力します.
  • に答える

  • sugar = int(input())
    
    bag = 0 # 설탕 봉지 수 카운트
    while sugar >= 0 : # while문은 입력받은 sugar의 수가 0보다 같거나 클 때까지만 반복한다. 
        if sugar % 5 == 0 :  # 만약 배달해야 하는 설탕의 kg 수가 5의 배수이면
            bag += (sugar // 5)  # 5kg 짜리 봉지의 수(5로 나눈 몫) 만큼 카운트 추가
            print(bag)
            break # 5의 배수이기 때문에 3kg 봉지는 고려하지 않아도 되니 break로 탈출한다.
        sugar -= 3  # 3kg 봉지 개수 세기
        bag += 1  
        # sugar변수가 5의 배수가 될 때까지 반복한다.
    else : # sugar가 0이 될 때까지 5의 배수로 나누어 떨어지지 않은 경우에는 -1을 출력한다.
        print(-1)