나누는 숫자들이 300, 60, 10이다.
다만, 이 숫자들은 배수 관계이므로 무조건 더 큰 것을 쓸 수 있으면 쓰는 것이 유리하다.
예를 들어 60 * 5나 10 * 30을 하는 것보다 300 1개 쓰는 것이 무조건 유리하다.
즉, 더 큰 단위로 표현할 수 있으면 무조건 해당하는 것부터 쓰는 것이 유리하다.
이 부분에서 그리디 문제임을 파악하면 된다. 쉽다
#include <bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
using namespace std;
int main(void){
fastio;
int n;
cin >> n;
if(n % 10 != 0){
cout << -1 << "\n";
}
else{
int check_1 = n / 300;
int check_2 = (n - check_1 * 300) / 60;
int check_3 = (n - check_1 * 300 - check_2 * 60) / 10;
cout << check_1 << " " << check_2 << " " << check_3 << "\n";
}
return 0;
}