알고리즘/다이나믹 프로그래밍(DP)

[백준]JAVA - 2839번: 설탕 배달

K.두부 2022. 9. 15. 19:58
반응형

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

 

2839번: 설탕 배달

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

www.acmicpc.net

풀이

이번 문제는 그냥 수학적 사고 테스트 문제이다. 

3kg과 5kg 두 가지의 설탕 봉지를 이용해서 배달하려는 무게를 정확하게 맞추어 봉지의 개수를 최소한으로 하는 게 목표이다. 

 

처음엔 문제를 너무 어렵게 생각했었다. 간단하게 생각해서 5kg의 설탕 봉지를 많이 사용하면 그만큼 봉지의 개수를 최소한으로 할 수 있다는 걸 생각하지 못 했다. 이걸 알게 된 후에는 문제가 엄청 쉬워졌다.

 

그냥 배달하려는 무게가 5로 나누어진다면 5를 나누고, 그렇지 않다면 3을 빼주면 된다.

위 방법을 무게가 0이 될 때까지 반복하다가 음수가 된다면 -1을 반환하고, 0으로 정확하게 떨어진다면 봉지의 개수를 반환하면 된다.

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int weight = Integer.parseInt(br.readLine());
        int cnt = 0;
        
        while (weight > 0) {
            if (weight % 5 == 0) {
                cnt += (weight / 5);
                weight = 0;
            } else {
                weight -= 3;
                cnt++;
            }
                    
            if (weight < 0) cnt = -1;
        } 
        
        System.out.println(cnt);
    }
}

 

반응형