개발일지/코딩테스트

[Programmers] 최고의 집합 (c++)

쫌눈 2025. 3. 11. 19:08
728x90
반응형

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

N개의 합이 S인 원소집합 중 각 원소의 곱이 제일 큰 수를 찾는 것이다.

4, 16 =>  4,4,4,4

4, 17 => 4,4,4,5

4, 18 => 4,4,5,5

4, 19 => 4,5,5,5

4, 20 => 5,5,5,5

S%N의 개수만큼 원소에 1을 더하면 된다.

기본값은 S/N이다.

vector<int> solution(int n, int s) {
	vector<int> answer;

	int mid = s / n;
	int l = s % n;
	if (mid <= 0)
	{
		answer.emplace_back(-1);
		return answer;
	}
	for (int i = 0; i < n; i++)
	{
		answer.emplace_back(mid);
	}
	for (int i = 0; i < l; i++)
	{
		answer[i] += 1;
	}

	sort(answer.begin(), answer.end());

	return answer;
}
728x90
반응형