Algorithms
수정·
[Programmers] Lv3 최고의 집합
Programmers Lv3 최고의 집합
문제 설명
모든 원소가 자연수이고 원소의 개수가 n개인 집합 S가 있다. S의 모든 원소를 더한값이 s가 되고 모든 원소를 곱한 값이 최대가 되는 S` 를 구하라.
접근 방식
- n개의 크기를 가진 정수 배열 arr 을 선언
- s를 n으로 나눈 정수 값 k를 arr의 각 원소에 할당
- s를 n으로 나눈 나머지 값 d를 구함
- d가 0이 될 때 까지 d를 1 씩 감소 시키며 arr의 각 원소를 라운드로빈으로 1씩 증가
Source
import java.util.*;
class Solution {
public int[] solution(int n, int s) {
int [] answer = new int[n];
if(n > s) {
return new int[]{-1};
}
int base = s / n;
int remain = s % n;
for(int i = 0 ; i < answer.length ; i++) {
answer[i] = base;
}
for(int i = 0 ; i < remain ; i++) {
int offset = i % n;
answer[offset]++;
}
Arrays.sort(answer);
return answer;
}
}