[백준] 2839 설탕 배달

바그다드·2023년 3월 4일
0

알고리즘

목록 보기
12/14

문제


리뷰

처음 풀이

처음에는 되게 해멨다.
처음 내가 생각했던 경우의 수는 총 4가지였다.
1. 5kg으로 나눠 떨어지는 경우
2. 5kg으로 나눈 나머지가 3kg으로 나누어 떨어지는경우
3. 3kg으로 나누어 떨어지는 경우
4. 나누어 떨어지지 않는 경우
그런데 이걸 if문을 이용하여 처리하려니 2번이 문제였다.
나는 처음에 if( (kg%5) % 3 == 0)으로 단순하게 생각했는데,
이렇게 하면 11을 집어넣었을 경우 ( 1 % 3 == 0) 이렇게 되어 요건을 충족하지 못한다.
단순히 5kg봉투를 빼고 남은 경우에 3kg봉투에 담아 가게 만든다고만 생각했다.

정답 풀이

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int kg = sc.nextInt();
        int cnt = 0;

        while (true){
            if(kg % 5 == 0){
                cnt += kg / 5;
                System.out.println(cnt);
                break;
            }
            kg -= 3;
            if (kg < 0) {
                System.out.println(-1);
                break;
            }
            cnt++;
        }

    }
반복문을 적용시켰다.
1. 마찬가지로 처음에는 5kg으로 나누어 떨어지는 경우의 수를 정의한다.
	여기서 kg을 5로 남은 몫만큼 봉투의 개수를 추가하고 반복문을 빠져나온다.
2. 그렇지 않을 경우 3kg을 빼고 봉투를 1 추가하고.
3. 남은 kg이 0미만이면 -1을 출력하고 반복문을 빠져나온다.
4. 남은 kg이 0이상이면 반복문을 이어간다.
profile
꾸준히 하자!

0개의 댓글