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로 결과를 출력해준다.