문제 해석
- 문제 자체는 간단하게, 봉지는 5KG 봉지와 3KG봉지가 주어지고, 입력받은 설탕의 킬로그램(N)을 어떻게하면 가장 적은 봉지로 담아 배달할 수 있을까?의 문제이다.
코드
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
br.close();
int basket = 0;
while(N>0){
if(N % 5 == 0){
basket += N/5;
break;
}else {
N -= 3;
basket++;
}
if(N < 0){
basket = -1;
}
}
bw.write(basket + "");
bw.flush();
bw.close();
}
}
- 5로 딱 나누어지면 몫을 basket 변수에 누적 더하기로하고, 그게 아니라면 3으로 나눠지거나 그냥 나눌 수가 없다는 것인데, 일단 봉지는 5KG, 3KG가 있으니까 5KG로 나눠지지 않으면 -3으로 나눠주고 basket을 증가시킨다.
- 3KG으로 나눠지냐 안나눠지냐를 따로 처리를 안해줬기 때문에 break;문을 따로 두지 않고, 밑 if문을 돌도록 하였다.
- 만약 if문에서 N이 0보다 작다는 것은 3으로 나눠지지 않는 다는 것이니까 -1이 출력되어야 한다. => 즉 basket 변수를 -1로 초기화해준다.
결과
느낀점
- 좀 더 효율적인 코드를 작성할 수 있을 것 같은데, 내 코드가 불필요한 변수를 사용하는 것같다는 느낌을 좀 받았다.
- 나중에 다시 보완해서 수정할 예정이다.