Posts [백준] 2839번 - 설탕 배달
Post
Cancel

[백준] 2839번 - 설탕 배달


백준 온라인 저지의 2839번 설탕 배달 문제입니다.

[링크] https://www.acmicpc.net/problem/2839


문제 조건과 설명

  • 사탕가게에서 설탕을 정확하게 N킬로그램을 배달해야 합니다.
  • 이 설탕은 봉지에 담겨져 있는데, 봉지는 3kg와 5kg 가 있습니다.
  • N킬로그램을 배달하는데, 최소한의 봉지를 들고 가려고 합니다.
    • 예를 들어 18kg을 배달해야 한다면 3kg 봉지 6개도 되지만, 5kg 1개와 3kg 1개를 달하면 더 적은 수의 봉지를 들 수 있습니다.

Input

첫째 줄에 N이 주어집니다. (3<=N<=5,000)


Output

배달하는 봉지의 최소 갯수를 출력하고, 만약 정확하게 Nkg를 만들 수 없으면 -1을 출력합니다.


생각한 아이디어

5kg 봉지가 많다면 가장 올바른 결과가 될 것입니다.

만약에 N이 5로 나누어 떨어진다면 볼 필요도 없이 그 몫이 정답입니다.

즉, 5kg 봉지로만 봉지를 마련하면 됩니다.

만약 처음에 5로 나누어 떨어지지 않았다면, N에서 3을 차감하고 3kg 봉지 수 카운트를 증가시킨 뒤 다시 그것을 5로 나누었을 때 나누어 떨어지는지 아닌지 판단합니다.

그 과정을 거치다가 N이 3보다 작아지게 되면 -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
#include <stdio.h>

int main() {

	int N;
	int cnt_3 = 0;
	int cnt_5 = 0;

	scanf("%d", &N);
	while (N % 5 != 0) {
		N = N - 3;
		cnt_3++;

		if (N < 3 && N != 0) {
			printf("-1");
			return 0; // 그냥 return으로 쓰면 백준에서는 런타임 에러가 뜰 것이다.
		}
	}
	cnt_5 = N / 5;

	printf("%d",cnt_5 + cnt_3);

	return 0;
}