https://school.programmers.co.kr/learn/courses/30/lessons/120923
| num | total | result |
|---|---|---|
| 3 | 12 | [3, 4, 5] |
| 5 | 15 | [1, 2, 3, 4, 5] |
| 4 | 14 | [2, 3, 4, 5] |
| 5 | 5 | [-1, 0, 1, 2, 3] |
function solution(num, total) {
const median = Math.ceil(total / num);
return Array(num).fill(median).map((v, i) => v - Math.floor(num / 2) + i);
}
function solution(num, total) {
const a = total / num - (num + 1) / 2;
return Array(num).fill(a + 1).map((v, i) => v + i)
}
✔ 수열의 합 공식을 이용
(a+1) + (a+2) + ... + (a+num)
= (num*a) + num(num+1) / 2
= total
✔ a에 대해 나타내면 a = total / num - (num + 1) / 2 가 된다.
✔ [a+1, a+2, ..., a+num] -> 배열을 a+1로 채우고 map으로 돌면서 인덱스만큼 더해주면 끝