배열 평균 구하기 오류
배열 요소의 산술 평균을 구하는 것과 관련된 오류를 살펴보겠습니다. 예를 들어 다음과 같은 배열이 주어졌다고 가정해 보겠습니다:
let arr = [1, 2, 3, 4, 5];
요소의 평균을 구하려면, 그 합계를 구한 후 개수로 나누어야 합니다. 어떤 프로그래머가 이미 이 문제를 다음과 같이 해결했습니다:
let avg = 0;
for (let elem of arr) {
avg += elem / arr.length;
}
console.log(avg);
이 해결책의 문제점을 살펴보겠습니다. 기술적으로 코드는 올바르게 작동하고 정답을 제공합니다. 사실 수학적으로는 전체 합계를 개수로 나누는 것도, 각 항을 개수로 나누는 것도 모두 옳습니다.
그러나 다른 문제가 발생합니다. 사실은 우리가 배열에 있는 요소의 수만큼 나누기 연산을 수행하게 됩니다. 그 결과, 우리는 많은 수의 불필요한 연산을 하게 되는데, 왜냐하면 나누기는 마지막에 한 번만 - 발견된 전체 합계를 나누면 되기 때문입니다.
코드를 최적화해 보겠습니다:
let sum = 0;
for (let elem of arr) {
sum += elem;
}
let avg = sum / arr.length;
console.log(avg);