최고의 집합

유성재·2023년 1월 2일
0
post-custom-banner

문제

풀이

이 문제도 어떤 배열을 구해야 하는가?만 알면 쉬운 문제같다.

원소를 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에 채워넣었다.

그리고 남은 값을 균등하게 뒤에서부터 하나씩 추가해주면 정답이 나온다.

profile
열정 있는 개발자
post-custom-banner

0개의 댓글