C++:: 프로그래머스 < 최고의 집합 >

jahlee·2023년 9월 11일
0

프로그래머스_Lv.3

목록 보기
16/29
post-thumbnail

문제 조건을 확인했을때 자연수의 개수가 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;
}

0개의 댓글