📝문제 설명

 

 


📢입출력 예시

 


✏️문제 풀이

package Baekjoon.Greedy;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Baek2839 {
    public static void main(String[] arg) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

        int sugar = Integer.parseInt(bufferedReader.readLine());
        int count = 0;

        while(sugar > 0){
            if(sugar % 5 == 0){
                count += sugar/5;
                break;
            }else{
                sugar -= 3;
                count++;
            }
            if(sugar < 0){
                count = -1;
            }
        }
        System.out.println(count);
    }
}

 

1. 그리디 문제는 현재 최고의 해답을 찾는게 가장 좋다. 가장 적게 만들려면 3kg 보다 5kg짜리가 많으면 좋으니 먼저 5의 배수를 만들어야 한다.

2. 첫 if문에서 5의 배수이면 바로 몫을 찾아 break를 걸어주고

3. 5의 배수가 아니라면 5의 배수를 맞추기 위함과 3kg짜리의 개수를 파악하기 위해 전체 설탕 양에서 3kg씩 빼준다.

4. 만약 5의 배수를 맞추고, 3kg짜리의 개수를 파악하려다가 5kg의 배수도, 3kg의 배수도 아니게 된다면 -1을 출력해야한다.