문제 출처 : https://www.acmicpc.net/problem/2839
문제
설명
코드 자체는 굉장히 간단한 편인데, 아이디어를 얻기가 그만큼 쉽지는 않았던 문제였습니다.
전형적인 그리디 유형의 문제로, 5kg으로 최대한 많이 들고 가도록 하는게 포인트입니다.
5로 나눠지면 5kg로 다 들고갈 수 있다는 뜻이니 그 전에 구한 3kg의 갯수와, 남은 설탕을 5로 나눈 몫을 더해서 답을 내고 그렇지 않다면 3kg의 갯수를 하나씩 늘려줍니다.
계속 3kg로만 담아지다 남은 나머지가 3이나 5로 나눠 떨어지지도 않는다면, 5kg와 3kg로 Nkg를 만들 수 없다는 의미가 되므로 -1을 출력하고 종료합니다.
코드
import java.util.Scanner;
//그리디 -> 5kg를 우선적으로 최대한 많이 담기!
public class BOJ2839_SugarDeliver4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int bag3 = 0;
while(true) {
if(n%5==0) {
System.out.println(n/5+bag3);
break;
} else {
bag3++;
n-=3;
}
if(n<0) {
System.out.println(-1);
break;
}
}
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[BOJ][JAVA] 17135 - 캐슬 디펜스 (0) | 2021.09.07 |
---|---|
[BOJ][JAVA] 1074 - Z (0) | 2021.08.29 |
[BOJ][JAVA] 15686 - 치킨 배달 (0) | 2021.08.25 |
[BOJ][JAVA] 3040 - 백설 공주와 일곱 난쟁이 (0) | 2021.08.24 |
[BOJ][JAVA]2493 - 탑 (0) | 2021.08.20 |