알고리즘/BOJ - Java

[BOJ/Java] 2839. 설탕 배달

ImJay 2024. 2. 4. 16:12
반응형

[BOJ/Java] 2839. 설탕 배달

 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net


풀이

package edu.ssafy.im.BOJ.No2839;

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

public class Main {
    static int n;
    static int ans = Integer.MAX_VALUE;

    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        n = Integer.parseInt(br.readLine());

        // dp 알고리즘을 이용하여 최소 개수의 봉지 수 계산
        dp();
    }

    // 동적 계획법을 이용하여 최소 개수의 봉지 수 계산
    private static void dp() {
        int[] dp = new int[n + 1];
        Arrays.fill(dp, 2000); // 최대값으로 초기화
        dp[3] = 1; // 초기값 설정
        if (n >= 5)
            dp[5] = 1; // 초기값 설정
        for (int i = 6; i < dp.length; i++) {
            // 현재 무게에서 3kg 봉지를 사용할 경우와 5kg 봉지를 사용할 경우 중 최소값 선택
            dp[i] = Math.min(dp[i - 3] + 1, dp[i - 5] + 1);			
        }
        // 최종 결과 출력
        System.out.println(dp[n] >= 2000 ? -1 : dp[n]);
    }
}

 

반응형