Language/JAVA
백준 2839번(미완)
수잉
2021. 1. 18. 03:18
입력 -> 출력
18 4
4 -1
6 2
9 3
11 3
이 나와야 한다고 한다.
조건문과 반복문을 이용해보려고 한다!
1) 무게<5 인 경우 : 무게가 3일때 봉지 개수 =1
이외 - 정확히 N킬로그램 만들 수 X = -1
2) 무게>5 인 경우
(1) 무게가 5로 정확히 나눠 떨어지는 경우
봉지 개수 = 무게를 5로 나눌 때 몫
(2) 무게가 3으로 정확히 나눠 떨어지는 경우
봉지 개수 = 무게를 3으로 나눌 때 몫
(3) 이외
1st. 무게에서 5를 뺀다(봉지개수를 최소화 한다고 하였으므로) -> 봉지개수 +1
2nd. 3으로 나눴을 때 나눠 떨어지면 -> 봉지개수 + {(무게-5)/3}
이것도 예외의 경우가 존재하지만, 일단 문제에서 주어지는 입력값들은 값이 작아서 예외가 발생하지 않음 !
예외 처리하려 생각하니 머리가 아픔..
3rd. 3으로 나눴을 때 나눠 떨어지지 X => 다시 무게에서 5를 빼며 반복 -> 봉지개수 +1
import java.util.Scanner;
class Main {
public static void main(String[] args) {
int weight;
int cnt=0;
for(int i=0;i<4;i++) {
Scanner sc=new Scanner(System.in);
System.out.println("무게입력");
weight=sc.nextInt();
if(weight<5) {
if(weight%3==0)
System.out.println(1);
else System.out.println(-1);
}
else {
if(weight%5==0)
cnt+=(weight/5);
else if(weight%3==0)
cnt+=(weight/3);
else {
while (1){
weight-=5;
cnt++;
if(weight%3==0) {
cnt+=(weight/3);
break;
}
}
}
}
System.out.println(cnt);
sc.close();
}
}
}