연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.
- 1 ≤
num≤ 100 - 0 ≤
total≤ 1000 num개의 연속된 수를 더하여total이 될 수 없는 테스트 케이스는 없습니다.
function solution(num, total) {
if (num === 1) return [total];
if (num % 2 !== 0) {
const answer = [];
const median = total / num;
answer.push(median);
const plusMinusValue = (num - 1) / 2;
for (let i = median - 1; i >= median - plusMinusValue; i--) {
answer.unshift(i);
}
for (let i = median + 1; i <= median + plusMinusValue; i++) {
answer.push(i);
}
return answer;
}
const answer = [];
const leftMedian = parseInt(total / num);
const rightMedian = leftMedian + 1;
const plusMinusValue = (num - 2) / 2;
answer.push(leftMedian);
answer.push(rightMedian);
for (let i = leftMedian - 1; i >= leftMedian - plusMinusValue; i--) {
answer.unshift(i);
}
for (let i = rightMedian + 1; i <= rightMedian + plusMinusValue; i++) {
answer.push(i);
}
return answer;
}num이 1인 경우, 짝수인 경우, 홀수인 경우로 나눠서 생각할 수 있다.num이 1인 경우, 바로[total]을 반환한다.num이 홀수인 경우,total을num으로 나눈 값이 정수 배열의 중앙값이 된다.- 이 중앙값을 먼저 배열 안에 넣는다.
- 이후 중앙값의 좌우로
(num - 1) / 2만큼을 채워넣고 정수 배열을 반환한다.
num이 짝수인 경우,total을num으로 나눈 몫이 정수 배열의 중앙의 두 값 중 왼쪽 값이 된다.- 중앙의 두 값 중 왼쪽 값과 1을 더한 값(중앙의 오른쪽 값)을 배열에 넣는다.
- 이후 중앙 두 값의 좌우로
(num - 2) / 2만큼을 채워넣고 정수 배열을 반환한다.