- C언어 : 기본수학1(7)
13.JUL.2022
설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.
상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을
배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면,
더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지
몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오.
#include <stdio.h>
int main()
{
int n, result = 0;
scanf("%d", &n);
while (1) {
if (n % 5 == 0) { // 5의 배수일 때는 그냥 몫만 출력
result += n / 5;
printf("%d", result);
break;
}
n -= 3; // 5의 배수가 아니면 3을 빼주고 횟수인 result++
result++;
if (n < 0) { // 5와 3으로 나누어지지 않을 때
printf("%d", -1);
break;
}
}
}
오 쉽네 이러고 한참 짜고 테스트하려고 보니 11을 입력했을 때 3이 나와야 한다는 조건을 보고 잠깐 멈칫했다. 그렇지. 11은 둘의 배수는 아니지만 5kg 하나랑 3kg 둘이면 되니까...홀홀홀 웃으며 다시 엎었다. 간단해서 다행이야.
상근이가 가장 선호하는 건 무게가 아닌 봉지의 개수. 즉 5로 나누어지면 가장 좋다. 그래서 5의 배수일 때는 몫만 출력하지만 아니라면 3kg를 빼 본다. 이렇게 하면 3의 배수일 때는 이 뺀 횟수를 세서 나올 것이고, 11 같은 경우에는 3을 2번 뺀 후, 5가 남으니 if문에 들어가 result를 출력한다.
나눌 수 없는 4 입력 같은 경우, 3을 2번 빼면 0보다 작아지므로 -1을 출력한다.