https://www.acmicpc.net/problem/2839
정확하게 Nkg을 만드려면 무조건 3kg과 5kg로 이루어져야 하기 때문에
결국 무게는 (5의 배수) + (3의 배수)로 이루어져있다.
이때, 봉지수를 적게 가져가려면
5kg을 우선으로 생각하되 , 5kg으로 로 당장 나누어 떨어지지 않으면 3kg으로 양보 한 후, 5kg으로 또 나눠봐야한다.
//#2839 설탕 배달
#include <iostream>
using namespace std;
int main(void) {
//입출력 속도 향상
cin.tie(NULL);
cout.tie(NULL);
ios_base::sync_with_stdio(false);
int i;
int n; // 배달해야하는 설탕 n킬로그램
int bag = 0; //봉지의 개수
cin >> n;
while (true) {
//최대한 적은 가방을 가져가려면 5부터 고려
//1. 5로 나누어 떨어진다면 5에 모두 넣기
if (n % 5==0) {
bag += n / 5;
cout << bag;
break;
}
//2. 5로 나누어 떨어지지 않으면, 3에 하나 넣고 또 5에 들어가는지 검사해야됨
n -= 3;
bag++;
//3. n=0이 됐으면
if (n==0) {
cout << bag;
break;
}
//3. n이 5로 나누어지지 않아서 3을 뺐더니 0보다 작다-> 정확하게 N킬로그램을 만들 수 없다.
if (n < 0) {
cout << -1;
break;
}
}
}