이 문제도 어떤 배열을 구해야 하는가?만 알면 쉬운 문제같다.
원소를 n개 가진 집합의 합이 s가 되면서 곱이 최대가 되기만 하면 되는건데
곱이 최대가 되기 위해선 값이 최대한 균등하게 나눠지면 된다.
또 최고의 집합이 존재하지 않는 경우는 자연수의 집합이 만들어질 수 없는 s<n의 경우밖에 없다.
function solution(n, s) {
var answer = Array(n);
//나눴을 때 소수점을 뺀 값
var element = ~~(s/n)
//조건에 따라 정답 입력
if(s<n){
answer = [-1]
}else{
answer.fill(element)
var remain = s%n
for(var i = 1; i<remain+1 ; i++){
answer[answer.length-i]++
}
}
return answer;
}
answer에 크기가 n인 배열을 선언해주고 (s/n)에 틸트 연산자(~~)를 활용해 소수점 아래를 제거해서 answer에 채워넣었다.
그리고 남은 값을 균등하게 뒤에서부터 하나씩 추가해주면 정답이 나온다.