문제
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.
상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.
상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000)
출력
상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정확하게 N킬로그램을 만들 수 없다면 -1을 출력한다.
예제
풀이
1) 풀어헤쳐서 보기
import java.util.*;
import java.lang.*;
import java.io.*;
public class Main{
public static void main (String[] args) throws java.lang.Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine()); // 킬로그램 입력
// 봉투 개수가 같은 조건
// 1. N이 4이거나 7일 경우
if(N==4 || N==7){
System.out.println(-1);
// 2. N이 5의 배수일 경우 5의 합
} else if((N%5) == 0){
System.out.println(N/5);
// 3. N이 5의 배수+첫번째 수와 5의 배수+세번째 수인 경우
} else if((N%5)==1 || (N%5)==3){
System.out.println(N/5 + 1);
// 4. N이 5의 배수+두번째 수와 5의 배수+네번째 수인 경우
} else if((N%5)==2 || (N%5)==4){
System.out.println(N/5 + 2);
}
}
}
st-lab님 블로그가 없었으면 어떻게 풀었을까? 기초를 이해하는데 늘 도움이 되고 있는 천재만재님의 블로그
규칙은 찾았으나 어떻게 풀어야할지 감을 못잡았는데 올려주신 풀이를 보고 이해하게 되었다. 하하!!
조건
1. 최대한 적은 봉지로, 봉지의 최소 개수 찾기
2. 정확하게 N킬로그램을 만들 수 없다면 -1 출력
규칙
일일이 다 풀어헤쳐보았다!!
5 = 5*1 + 3*0 = 1
6 = 5*0 + 3*2 = 2
7 = -1
8 = 5*1 + 3*1 = 2
9 = 5*0 + 3*3 = 3
10 = 5*2 + 3*0 = 2
11 = 5*1 + 3*2 = 3
12 = 5*0 + 3*4 = 4
13 = 5*2 + 3*1 = 3
14 = 5*1 + 3*3 = 4
15 = 5*3 + 3*0 = 3
16 = 5*2 + 3*2 = 4
17 = 5*1 + 3*4 = 5
18 = 5*3 + 3*1 = 4
19 = 5*2 + 3*3 = 5
20 = 5*4 + 3*0 = 4
21 = 5*3 + 3*2 = 5
22 = 5*2 + 3*4 = 6
23 = 5*4 + 3*1 = 5
24 = 5*3 + 3*3 = 6
즉, 5의 배수인 5, 10, 15의 최소 봉투 개수에서 +1을 해주면 홀수의 최소 봉투 개수, +2를 해주면 짝수의 봉투 개수이다.
참고
[백준] 2839번 : 설탕 배달 - JAVA [자바]
https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만
st-lab.tistory.com
출처
2839번: 설탕 배달
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그
www.acmicpc.net
'Algorithm > Java' 카테고리의 다른 글
[백준알고리즘] 1011번 Fly me to the Alpha Centauri (JAVA) (0) | 2021.03.02 |
---|---|
[백준알고리즘] 10757번 큰 수 A+B (JAVA) (0) | 2021.02.26 |
[백준알고리즘] 2775번 부녀회장이 될테야 (JAVA) (0) | 2021.02.24 |
[백준알고리즘] 10250번 ACM 호텔 (JAVA) (0) | 2021.02.23 |
[백준알고리즘] 2869번 달팽이는 올라가고 싶다 (JAVA) (0) | 2021.02.22 |