알고리즘(C++)/백준 알고리즘
2839번 : 설탕 배달
개발하는꼬물이
2017. 11. 17. 16:05
1. 문제 요약
설탕공장에서 만드는 설탕은 봉지에 담겨져 있고, 설탕 봉지는 5킬로그램 짜리와 3킬로그램짜리가 있다.
상근이는 설탕 배달을 갈 때, 최대한 적은 봉지를 들고가려고 한다. 예를 들어 18킬로그램 설탕을 배달해야 할 때,
3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개로 가져가는 것이 더 적은 개수의 봉지로
배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는
프로그램을 작성하시오. (단, 3 <= N <= 5000)
2. 예제 입력
18
3. 예제 출력
4
4. 코드
#include <iostream> using namespace std; int main() { int n, big, small; int remainder; cin >> n; if (n < 3 || n > 5000) return 0; big = n / 5; // 먼저 5 킬로그램으로 나눔 while (big >= 0) // 5 킬로그램짜리를 1개씩 감소시키면서 반복 { remainder = n - (5 * big); if (remainder % 3 == 0) { cout << big + (remainder / 3) << endl; return 0; } big--; } if (big < 0) // 반복문이 끝날 때 까지 출력이 없으면 나누어 떨어지지 않는 수 이므로 -1 출력 { cout << "-1" << endl; } return 0; }