문제 조건을 확인했을때 자연수의 개수가 10000까지인걸 보면 직접 집합을 구하면 시간초과가 난다는 점을 판단할 수 있다. 때문에 최고의 집합을 판단하는 방법에 대해 생각을 했을 떄 각 수가 고르게 나누어지면 된다는 점을 알 수 있다.
예시로 9 100 이 들어오게된다면 자연수가 모두 11이고 하나만 12 이게 된다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int n, int s) {
if (n > s) return {-1};// 불가능하면
vector<int> answer(n, s/n);
int rest = s % n;
for (int i=n-1; rest>0; i--, rest--) {// 나머지가 존재하면 하나씩 추가해준다.
answer[i]++;
}
return answer;
}