백준 2839 설탕 배달 [JAVA]

Ga0·2023년 4월 17일
0

baekjoon

목록 보기
31/125

문제 해석

  • 문제 자체는 간단하게, 봉지는 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()); //배달해야하는 무게가 총 몇 kg
        br.close();

        int basket =  0; //총 몇개의 봉지가 들어가는지

        while(N>0){
            if(N % 5  == 0){ //5로 나누어지면
                basket += N/5;
                break;
            }else { //만약 아니라면 3KG이거나 봉지에 담지 나눠담지 못하는 것.
                N -= 3;
                basket++;
            }
            if(N < 0){ //차피 나눠지지 않는다면 else문에서 -3을 했기 때문에 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로 초기화해준다.

결과

느낀점

  • 좀 더 효율적인 코드를 작성할 수 있을 것 같은데, 내 코드가 불필요한 변수를 사용하는 것같다는 느낌을 좀 받았다.
  • 나중에 다시 보완해서 수정할 예정이다.

0개의 댓글