[JavaScript][Programmers] 최고의 집합

조준형·2021년 7월 29일
0

Algorithm

목록 보기
44/142
post-thumbnail

🔎 최고의 집합

❓ 문제링크

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

📄 제출 코드

function solution(n, s) {
    var answer = [];
    let a = Math.floor(s / n);
    let b = s%n;
    if (a==0) answer.push(-1);
    else {
        for (let i = 0; i < n; i++) {
            if (b == 0) {
                answer.push(a)
            } else {
                answer.push(a + 1);
                b--;
            }
        }
    }
    return answer.sort();
}

let n = 2;
let s = 9;
console.log(solution(n, s));

처음에 아 그냥 가운데 숫자에서 합이되면 그냥 두번 push하고, 아니면 +1해서 push하고 하면 되겠다고 생각했는데, 당연히 오류가 나왔다.
문제를 제대로안읽어 예제에서 n이 2라고되있어 당연히 두개로 나눈 경우만 생각해서 그렇다.

먼저 n등분했을때 그 값들을 구하는게 정답이긴 하다.
그래서 a에 s/n을, b에 s%n을 한다.
만약 s/n이 0인경우는 n이 s보다 더 큰 경우로 답이 나올 수 없다. 그런 경우 -1을 push
(문제에서 자연수라고 했기 때문에 음수는 나올 수 없다.)
아닌 경우 n번 반복하면서 답을 찾는다.

나머지가 0인 경우 a를 push한다.
2,9의 경우 a=4, b=1, n=2 처음에 5를 한번 push후 b--, 그 다음 b가 0이 되서 a를 push.
2,8의 경우 a=4, b=0, n=2 그래서 4를 두번 push.
3,10의 경우 a=3, b=1, n=3
순서대로 4, 3, 3이 push되게 된다.

마지막으로 오름차순으로 정렬해서 결과를 출력하라하여 sort로 결과를 출력해준다.

profile
깃허브 : github.com/JuneHyung

0개의 댓글