백준 문제풀이/BRONZE

[백준 / BOJ / BRONZE 1] 설탕 배달 (C++)

지나가던 개발자 2021. 12. 25. 23:35
반응형

https://www.acmicpc.net/problem/2839

 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net

문제 접근법

  • n값이 5로 나누었을 때 나머지가 없다면 n 값을 5만큼 빼고 봉지의 갯수를 1개 늘립니다.
  • n값이 5로 나누었을 때 나머지가 존재한다면 n 값은 3만큼 빼고 봉지의 갯수를 1개 늘립니다.

한번에 연산하지 않고 왜 나누어 연산을 하는지에 대한 의문이 들 수 있습니다.

ex) 한번에 n / 5 개를 추가하면 안되는 이유(반례) : n이 16일 경우

  • 5짜리 봉지 3개를 추가하면 1kg이 남습니다.
  • 하지만 위의 방식대로 진행하면 5, 5, 3, 3 으로 4개의 봉지를 구할 수 있습니다.

아래는 코드입니다.

더보기
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
35
36
#include <cstdio>
 
using namespace std;
 
int main()
{
    int n, answer = 0;
    scanf("%d"&n);
 
    while (1)
    {
        if (n % 5 == 0)
        {
            n -= 5;
            answer++;
        }
        else
        {
            n -= 3;
            answer++;
        }
 
        if (n == 0)
        {
            printf("%d", answer);
            break;
        }
        else if (n < 0)
        {
            printf("-1");
            break;
        }
    }
 
    return 0;
}
cs
반응형