J 크 2023. 8. 6. 22:54
728x90
반응형

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

 

2839번: 설탕 배달

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

www.acmicpc.net

달달 배달


※  문제를 요약하면 아래와 같습니다.

 상근 씨가 N 킬로그램의 설탕을 배달

봉지는 3kg, 5kg 두가지의 종류가 존재

상근씨는 최대한 적은 봉지를 사용하고 싶음

 입력으로 설탕 N kg의 값이 주어짐

최소로 사용한 봉지 수 출력, 정확하게 N kg을 만들 수 없다면 -1 출력 

◈ Input - 1

18

◈ Output - 1 ( 3 + 5 + 5 + 5 )

4

◈ Input - 2

4

◈ Output - 2 ( 3 or 5로 구성할 수 없음 )

-1

 ◎  코드 작성 전, 아래와 같이 솔루션을 정리하였습니다.

 18 = 3 + 5 + 5 + 5,

    11 = 3 + 3 + 5,

    29 = 3 + 3 + 3 + 5 + 5 + 5 + 5

위의 특성에 따라 N이 5로 나누어 떨어질 때 까지 3씩 감소

위의 조건을 반복하다가 0보다 작아질 경우는 -1 반환

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

public class Main {
	
	
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		
		BufferedReader bReader = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(bReader.readLine());
        
        int nCount =0;

        while(N > 0) {
        	if(N % 5 == 0) {
        		System.out.println(nCount + N / 5);
        		return;
        	}
        	N -=3;
        	nCount++;
        }
        
        if(N < 0)
        	System.out.println(-1);
        else
        	System.out.println(nCount);
	}
}

 

읽어주셔서 감사합니다!

Good Luck! (피드백 고맙습니다)