입력받는 N을 3과 5 최소 개수로 구성시키는 문제.
3과 5 개수의 합을 출력해야 하고, 만약 3과 5로 N을 구성할 수 없다면 -1을 출력하면 된다.
중고등학생 때 확통에서 나오던 거스름돈 문제와 비슷하다.
5로 최대한 채우고 남은걸 3으로 채우는 식으로 착각했다면 틀렸을 것이다.
반례로 N=16인 경우를 들 수 있겠다.
코드는 간단하다. 확통 풀던 그대로 풀면 된다.
3개수를 0,1,2,.. 늘려가며 그 상황에서 5의 개수를 계산한다. 끄읏.
#include <iostream>
using namespace std;
int main(void) {
int N;
cin >> N;
int max = N / 3;
for (int i = 0; i <= max; i++) {
int num = 0;
if ((N - 3 * i) % 5 == 0) {
num = i + (N - 3 * i) / 5;
cout << num;
return 0;
}
}
cout << -1;
return 0;
}