Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 배열의 평균을 구해 가장 가까운 정수로 반올림하는 방법

문제 개요

숫자로 이루어진 배열을 입력받아, 배열 요소 전체의 평균을 계산한 뒤 그 값을 가장 가까운 정수로 반올림하여 반환하는 JavaScript 함수를 작성해야 합니다.

예를 들어 [45, 23, 67, 68, 12, 56, 99]라는 배열이 주어졌다면, 합계는 370이고 요소 개수는 7이므로 평균은 약 52.86입니다. 이를 반올림하면 최종 결과는 53이 됩니다.

구현 코드

다음은 reduce() 메서드와 Math.round()를 활용한 해결 코드입니다.

const arr = [45, 23, 67, 68, 12, 56, 99];
const roundedMean = (arr = []) => {
   const { sum, count } = arr.reduce((acc, val) => {
      let { sum, count } = acc;
      count++;
      sum += val;
      return { sum, count };
   }, {
      sum: 0, count: 0
   });
   const mean = sum / (count || 1);
   return Math.round(mean);
};
console.log(roundedMean(arr));

코드 설명

  • reduce() 메서드를 사용하면 배열을 한 번만 순회하면서 합계(sum)와 요소 개수(count)를 동시에 누적할 수 있어 효율적입니다.
  • 초기값으로 { sum: 0, count: 0 } 객체를 전달해 누산기(accumulator)를 시작합니다.
  • sum / (count || 1) 부분은 빈 배열이 들어왔을 때 0으로 나누는 오류(NaN 발생)를 방지하는 안전장치입니다. 배열이 비어 있으면 count가 0이 되는데, 이때 1로 대체되어 결과가 0으로 반환됩니다.
  • 마지막으로 Math.round()를 통해 계산된 평균값을 가장 가까운 정수로 반올림하여 반환합니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

53