[BOJ]2839号:送糖(Java)


質問する





2839号:砂糖配達

に答える



最小限の袋で配送するために5キロの袋に持ち込むことができるので、できるだけ多く持っていくようにしましょう.

コード#コード#


import java.io.BufferedReader;
import java.io.InputStreamReader;
​
public class Main {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        int three = 0;
        int five = n/5;             //5kg의 봉지를 최대로 가져갔을 때
        
        while(five>=0) {            //5kg의 봉지를 하나도 가져가지 않을 때 까지
            int rem = n-(five*5);   //현재 남아있는 양 = 3kg봉지로 매꿔야하는 양
            if(rem%3 == 0) {        //무게가 딱 알맞게 떨어진다면
                three = rem/3;      //현재가 가장 적은 수의 봉지
                break;
            }
            else five--;            //나눠떨어지지 않는다면, 5kg의 봉지를 하나씩 줄여줌
        }
        if(five == -1 && three == 0) System.out.println("-1");  //무게가 딱 떨어지지 않는다면 -1
        else System.out.println(three+five);
    }
}