Published:
Updated:

https://www.acmicpc.net/problem/2839


Solution

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

public class Main {
    // 3kg 봉지, 5kg 봉지 -> nkg 최대한 적은 봉지
    // 3 <= n <= 5000
    static int solution(int n) {
        // n에서 3을 뺀 값이 5의 배수일 때 (x) -> 나뭇가지가 더 많아짐
        // n에서 5를 뺀 값이 5 이상일 때 (x) -> "정확하게 N 킬로그램을 만들 수 없다면 -1을 출력한다"
        // n에서 3을 뺀 값이 음수일 때 (o) + 3을 계속 빼다가 5의 배수를 찾으면 나누기
        int cnt = 0;
        while (true) {
            if (n % 5 == 0) { // n이 5의 배수일 경우
                cnt += n / 5;
                break;
            } else { // n이 5의 배수가 아닐 경우
                n -= 3;
                cnt++;
            }
        }

        // n이 3보다 작을 경우 반복문 탈출
        if (n < 0) {
            return -1;
        }

        return cnt;
    }


    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        System.out.print(solution(n));
        br.close();
    }
}

Leave a comment