import java.util.Scanner; public class Main { public static void main(String [] args) { int N=0, C=0, T=0; // 변수 선언 N = 설탕무게, C = 자루수, // T = 3kg 자루 수 만큼의 무게를 뺀 설탕무게 Scanner sc = new Scanner(System.in); // 값을 입력 받기 위해 스캐너 사용선언 N = sc.nextInt(); // 입력 받은 값을 변수 N에 설정 T=N; if(N>=3&&N<=5000) // 문제의 설탕 무게 범위 설정 { for(int i=0;i<N;i++) // 무게 만큼 루프 반복 { T = N-(3*i); // T = 전체 무게 - (3KG * 루프카운터) 에 설정 if(T%5==0&&T>=0){ // T를 5로 나누어 나머지가 0인지를 확인 C = i + (T/5); // 자루 수 = 루프카운터 + 무게/5 break; // 루프 종료 } else // T의 나머지가 0이 아닐 시 { C = -1; // 정확하게 나누어 떨어지지 않으면 -1을 설정 } } System.out.println(C); // 자루 수 출력 } else System.out.println(-1); // 지정 된 범위 값을 넘어선 경우 } } |
이 문제는 설탕을 최소한의 자루 수로 가지고 가는 것이 목적이다.
따라서 3Kg자루 수를 적게 만들 수록 총 자루 수는 적어진다!!
그래서 나는 3Kg자루를 0개에서 부터 1개씩 늘려나가면서 (3Kg * 루프카운터) 만큼 무게를 뺀 T를 5로 나누어
나머지가 0이 되는 값을 찾도록 하였다.
예) 21Kg의 설탕이 있다면
루프 1회 : T = N(21) - 3 * i(1)
T(18) % 5 = 3
if문 조건을 만족하지 못하였기 때문에 -1을 설정하고 다음 루프 실행
루프 2회 : T = N(21) - 3 * i(2)
T(15) % 5 = 0
조건을 만족 했으므로 3Kg자루 수 + 남은 무게의 5Kg 자루 수를 구한 후 종료
이 글을 보고서는 이해가 잘 되지 않을 거 같다............
설명하기란 참 어렵구나.....
죄송해요...........
혹시나 좀 더 개선사항이 보이신다면 가르쳐주세요 >3<
그럼 이만~
따라서