반응형

https://programmers.co.kr/learn/courses/30/lessons/12938

 

코딩테스트 연습 - 최고의 집합

자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 "집합"으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 합니다. 각 원소의 합이 S가 되는 수의 집합 위 조건을 만

programmers.co.kr

 

s / n이면, n개의 수로 s를 만들 수 없습니다.

만들 수 있다면, 최대한 큰 값으로 수의 집합을 만들어야하므로 n개의 수를 s / n으로 초기화해줍니다.

그리고 남은 s % n라는 수를 그 크기만큼 뒤에서부터(정렬하지 않아도 되므로) 1씩 더해주면 됩니다.

 

#include <string>
#include <vector>
using namespace std;

vector<int> solution(int n, int s) {
    if(s / n == 0) return vector<int>(1, -1);
    vector<int> answer(n, s / n);
    for(int i=n-1, j = s % n; j > 0; i--, j--) answer[i]++;
    return answer;
}
반응형

+ Recent posts