이번에 풀어본 문제는
프로그래머스 최고의 집합 입니다.
import java.util.*;
class Solution {
public int[] solution(int n, int s) {
if (n > s) {
return new int[]{-1};
}
int [] answer = new int[n];
for (int i = 0; i < n; i++) {
answer[i] = (s / n);
}
for (int i = 0; i < (s % n); i++) {
answer[i]++;
}
Arrays.sort(answer);
return answer;
}
}
n개의 원소를 가진 집합의 합이 s라고 할 때, 집합의 곱이 최대가 되는 최고의 집합을 구해 출력하는 문제입니다.
항상 모든 원소가 (s / n)일때 가장 큰 조건을 만족하며, 나누어 떨어지지 않을 경우 해당 나머지 개수만큼의 원소에 값을 더해주면 최고의 집합을 구해낼 수 있다.
모든 조합을 구했더니 메모리 초과가 발생해서, 다른 풀이를 참고했습니다.
정말 똑똑한 풀이인 것 같네요..! 생각도 못했습니다 ㅎㅎ