[C] 백준 2839번, 설탕 배달 문제

문제 링크 : https://www.acmicpc.net/problem/2839

5KG, 3KG 봉지에 각각 입력 받은 NKG의 설탕을 담아 최대한 작은 숫자의 봉지를 가지고 배달을 하면 되는 문제입니다. 해답을 찾아내기까지의 과정은 아래와 같습니다.

  1. 5KG 봉지에 최대한 담아보고, 떨어진다면 출력하고 프로그램을 종료한다.
  2. 5KG 봉지에 정확하게 떨어지지 않는다면, 5KG 봉지를 하나씩 줄여가며, 3KG 봉지에 담아지는지를 계산한다. 3KG 봉지에 정확하게 떨어지는 순간이 있다면, 그 순간의 5KG 봉지의 수와 3KG 봉지의 수를 저장한 후, break;로 반복문을 나온다.
  3. 5KG 봉지의 수와 3KG 봉지의 수를 더한 값을 출력한다(처음에 -1과 0으로 초기화를 했기 때문에, 정확하게 떨어지지 않는 경우가 나오면 문제에서와 같이 -1을 출력한다).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
int main(int argc, const char * argv[])
{
    int N, num_5 = 1, num_3 = 0;
    int i;
    scanf(“%d”&N);
    if(N % 5 == 0)
    {
        num_5 = N / 5;
        printf(“%d”,num_5);
    }
    else
    {
        for(i = N/5; i>=0; i)
        {
            if( (N  5 * i) % 3 == 0)
            {
                num_5 = i;
                num_3 =( N  5 * i) / 3;
                break;
            }
        }
        printf(“%d”,num_5+num_3);
    }
}
cs