import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int weight = sc.nextInt();
int cnt = 0;
while(true) {
if(weight % 5 == 0) {
cnt += weight/5;
System.out.println(cnt);
return;
}else {
weight -= 3;
cnt++;
}
if( weight < 0) {
System.out.println(-1);
return;
}
}
}
}
이 문제의 키포인트는 가장 적은 개수로 배달을 해야 한다는 것이다.
예를 들어, 15kg를 배달할 경우 3kg로만 배달하면 5 봉지가 필요하지만 5kg으로만 배달을 하면 3 봉지만 배달을 하면 되는 것이다. 그래서 결국 같은 무게라도 개수가 적은 쪽이 나오도록 해야 한다.
1. 배달할 무게를 입력받는다.
2. 입력받은 무게가 5kg로 나누어서 나머지가 0일 때가 가장 적은 개수가 나올 수 있다.
3. 무게가 5kg로 나누어 떨어지지 않으면 3kg로 빼주고 cnt++로 개수 하나를 올려준다.
4. 계속 while문을 무게가 0이 될 때까지 수행해주면 다시 while문으로 들어갔을 때 0 % 5 = 0 이므로 while을 빠져나온다.
5. 무게가 0보다 작아지면 -1을 출력한다.
( 만약에 4kg을 입력받을 경우, 5로 나누어 떨어지지 않기 때문에 3으로 빼주고 개수 하나가 올라간다. 4 - 3을 빼면 1이 남기 때문에 다시 while을 수행하는데, 이때 5로 나누어 떨어지지 않아 다시 3을 빼주면 1 - 3 = -2 가 되어 버린다. 그래서 결국 배달을 할 수 없는 상황이 발생한다. 이런 경우 -1을 출력하도록 한다.)
'문제풀이 > 백준' 카테고리의 다른 글
백준 10828. 스택(JAVA) (0) | 2022.03.10 |
---|---|
백준 8958. OX퀴즈(JAVA) (0) | 2022.03.08 |
백준 11399. ATM(JAVA) (0) | 2022.03.07 |
백준 2490. 윷놀이(JAVA) (0) | 2022.03.06 |
백준 1009. 분산처리(JAVA) (0) | 2022.03.06 |