문제 소개
이번 글에서는 숫자 배열을 첫 번째 인수로, 그룹의 크기를 나타내는 숫자 n을 두 번째 인수로 받는 JavaScript 함수를 작성해 보겠습니다. 이 함수는 배열을 n개의 요소씩 묶어 각 그룹의 평균값을 계산한 뒤, 그 결과들을 새로운 배열로 반환해야 합니다.
예를 들어 입력이 다음과 같다면 −
const arr = [1, 2, 3, 4, 5, 6];
const n = 2;
배열을 2개씩 묶으면 [1, 2], [3, 4], [5, 6] 세 개의 그룹이 만들어지므로, 출력은 다음과 같아야 합니다 −
const output = [1.5, 3.5, 5.5];
해결 접근 방식
구현 방법은 간단합니다. 바깥쪽 반복문으로 배열을 순회하면서, 안쪽 반복문으로 n개의 요소를 차례대로 더해 합계를 구합니다. 그런 다음 합계를 n으로 나눈 값을 결과 배열에 push하면 됩니다. 이 과정을 배열의 끝까지 반복하면 모든 그룹의 평균을 구할 수 있습니다.
만약 마지막 그룹에서 요소가 부족하면 해당 위치의 값은 0으로 처리되어 계산에 포함됩니다.
예제 코드
const arr = [1, 2, 3, 4, 5, 6];
const n = 2;
const groupAverage = (arr = [], n = 1) => {
const res = [];
for (let i = 0; i < arr.length;) {
let sum = 0;
for(let j = 0; j< n; j++){
sum += +arr[i++] || 0;
};
res.push(sum / n);
}
return res
}
console.log(groupAverage(arr, n))
console.log(groupAverage(arr, 3))
실행 결과
위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다 −
[ 1.5, 3.5, 5.5 ]
[ 2, 5 ]
n이 2일 때는 [1, 2], [3, 4], [5, 6] 그룹의 평균인 1.5, 3.5, 5.5가 반환되고, n이 3일 때는 [1, 2, 3], [4, 5, 6] 그룹의 평균인 2와 5가 반환되는 것을 확인할 수 있습니다.