https://www.acmicpc.net/problem/2839
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int kg = sc.nextInt();
int bong = 0; // 몇 봉지?
while(true) {
if(kg%5 == 0) { // 5kg에 담을 수 있으면 다 담기
bong += kg/5;
break;
}
else { // 3kg에 담음
kg -= 3;
bong++;
}
if(kg<0) { // 나누어 담을 수 없는 무게
System.out.println(-1);
return;
}
}
System.out.println(bong);
}
}
풀이 :
상근이는 설탕을 배달하는데, 설탕 봉지는 두 개의 종류가 있다 : 3kg or 5kg
-> 따라서 설탕을 3kg와 5kg 봉지에 나누어 담아야 하는데 나누어 담은 봉지의 개수(배달해야하는)가 최소가 되어야한다.
int kg // 배달해야하는 설탕의 무게
int bong // 배달해야하는 봉지의 개수 (이것이 최소가 되도록)
1. 설탕을 5kg봉지에 많이 담을 수록 배달해야하는 봉지의 수가 적어진다
2. 5kg에 많이 담는법
설탕의 무게에서 3씩 감소시키다가 (3kg봉지에 담음) -> 무게가 5의 배수가 된다면? (kg%5==0) -> 5kg봉지에 다 담으면 됨
ex) 배달해야하는 설탕의 무게가 18이라면?
18 - 3 = 15
15는 5의 배수 -> 다 5kg봉지에 나누어 담기 (kg/5)
봉지의 개수 = 1(3kg짜리) + 3(5kg짜리) = 총 4봉지
설탕의 무게가 (kg) 0이 된다면 첫번째 if문에 걸리게되어 무한루프가 종료된다
3. 배달해야하는 무게가 3kg 봉지와 5kg 봉지에 나누어 담을 수 없다면 ?
설탕의 무게를 3씩 감소시키다보면 무게가 음수가 된다
이때 -1를 출력하고 종료시키면된다. (해당 무게는 3kg에 다 나누어 담을 수도 5kg에 다 나누어 담을수도 3kg와 5kg에 나누어 담을 수 없는 무게이다)
ex) kg = 4
4 - 3 = 1
1 - 3 = -2
'코딩테스트 > 백준' 카테고리의 다른 글
[백준-자바] 1978번 소수 찾기 / 2022.01.30 (0) | 2022.01.30 |
---|---|
[백준-자바] 2581번 소수 / 2022.01.29 (0) | 2022.01.29 |
[백준-자바] 2775번 부녀회장이 될테야 / 2022.01.25 (0) | 2022.01.25 |
[백준-자바] 1316번 그룹 단어 체커 / 2022.01.24 (0) | 2022.01.24 |
[백준-자바] 2292번 벌집 / 2022.01.23 (0) | 2022.01.23 |