본문으로 바로가기

백준 온라인 저지(Baekjoon Online Judge)  2839번 문제 풀이

설탕 배달

설탕을 정확하게 N kg 배달해야 할 때, 봉지를 최소 몇 개를 가져가면 되는지 구하라. 설탕 봉지는 3kg와 5kg 봉지가 있다.
예를 들어, 18kg 설탕을 배달해야 할 때, 3kg 봉지 6개를 가져가도 되지만, 5kg 3개와 3kg 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.

 입력 예시

출력 예시 

 18

 4

 4

 -1

 6

 2

 9

 3

 11

 3

풀이

1. N을 입력 받는다.
2. N을 5로 나눈 값을 CNT에 대입한다.
2-1. 5로 나누어 떨어지면 몫 반환 → (4)로 이동
2-2. 5로 나누어 떨어지지 않는다.
3. N에서 5kg 봉지 * CNT을 뺀 나머지 값이 3으로 나눈다.

3-1. CNT가 -1이면 반복문을 탈출한다 → (4)로 이동
3-1. 3으로 나누어 떨어지면 CNT에 몫을 더해서 반환 → (4)로 이동
3-2. 3으로 나누어 떨어지지 않으면 CNT값을 1감소 시킨다 → (3)로 이동
4. CNT를 출력한다.

정답

C
#include <stdio.h>
int main()
{
    int N=0;
    int cnt=0;//봉지 수
    scanf("%d", &N);

    cnt=N/5;
    if(N%5 != 0){
        for(;cnt>=0;cnt--)
        {
            if( (N-5*cnt)%3 == 0){
                cnt+=(N-5*cnt)/3;
                break;
            }    
        }
    }
    printf("%d", cnt);
    return 0;
}


순서도 작성

문제를 어떻게 풀어야 할지 순서도를 작성해보면 좋다!