작성일 :

문제 링크

2839번 - 설탕 배달

설명

5kg3kg 의 설탕 봉지들의 개수를 최소화하여 정확히 n kg 의 설탕을 배달하는 것에 대한 문제입니다.


5kg 의 봉지를 최대한 많이 사용하는 것이 봉지의 수를 최소화하는 방법입니다.

따라서, 먼저 n5 로 나눈 뒤, 나머지를 3 으로 나누어서 추가로 필요한 3kg 의 봉지의 개수를 구하면 됩니다.


다만, n4kg 혹은 7kg 과 같이 53 의 배수로 표현할 수 없는 경우에는 -1 을 출력해야 함에 주의합니다.


Code

[ C# ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
namespace Solution {
  class Program {
    static void Main(string[] args) {

      var n = int.Parse(Console.ReadLine()!);

      var cntFiveKgBags = n / 5;

      n %= 5;
      while (cntFiveKgBags >= 0) {
        if (n % 3 == 0) {
          Console.WriteLine(cntFiveKgBags + (n / 3));
          return ;
        }
        cntFiveKgBags--;
        n += 5;
      }

      Console.WriteLine(-1);

    }
  }
}



[ C++ ]

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
#include <bits/stdc++.h>

using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int n; cin >> n;

  int cntFiveKgBags = n / 5;

  n %= 5;
  while (cntFiveKgBags >= 0) {
    if (n % 3 == 0) {
      cout << cntFiveKgBags + (n / 3) << "\n";
      return 0;
    }
    cntFiveKgBags--;
    n += 5;
  }

  cout << -1 << "\n";

  return 0;
}