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

JavaScript로 데이터 세트의 평균과 최빈값이 같은지 확인하는 방법

문제 개요

정렬된 숫자 배열을 입력받아 해당 데이터 세트의 평균(mean)최빈값(mode)을 계산한 뒤, 두 값이 서로 같으면 true, 그렇지 않으면 false를 반환하는 JavaScript 함수를 작성해 보겠습니다.

예시

입력 배열이 다음과 같다고 가정해 봅시다.

const arr = [5, 3, 3, 3, 1];

이 배열의 평균은 (5 + 3 + 3 + 3 + 1) ÷ 5 = 3이고, 가장 자주 등장하는 값인 최빈값 역시 3입니다. 따라서 이 배열에 대한 출력 결과는 true가 됩니다.

구현 코드

다음은 위 문제를 해결하는 전체 코드입니다.

const arr = [5, 3, 3, 3, 1];

// 평균 계산: 모든 요소의 합을 배열 길이로 나눔
const mean = arr => arr.reduce((a, b) => a + b) / arr.length;

// 최빈값 계산: 각 숫자의 등장 횟수를 세고 가장 많이 나온 값 반환
const mode = arr => {
    let obj = {}, max = 1, mode;
    for (let i of arr) {
        obj[i] = obj[i] || 0;
        obj[i]++;
    }
    for (let i in obj) {
        if (obj.hasOwnProperty(i)) {
            if (obj[i] > max) {
                max = obj[i];
                mode = i;
            }
        }
    }
    return +mode;
};

// 평균과 최빈값 비교
const meanMode = arr => mean(arr) === mode(arr);

console.log(meanMode(arr));

출력 결과

콘솔에 출력되는 결과는 다음과 같습니다.

true

코드 동작 원리

1. 평균(mean) 계산

reduce() 메서드로 배열의 모든 요소를 더한 뒤, 배열의 길이로 나누어 산술 평균을 구합니다. 위 예시에서는 15 ÷ 5 = 3이 됩니다.

2. 최빈값(mode) 계산

객체(obj)를 사용해 각 숫자가 몇 번 등장했는지 빈도를 기록합니다. 이후 객체를 순회하며 등장 횟수가 가장 많은 숫자를 찾아 반환하며, 마지막에 단항 더하기 연산자(+)를 사용해 문자열 형태의 객체 키를 숫자로 변환합니다.

3. 두 값 비교

meanMode 함수는 엄격 일치 연산자(===)로 평균과 최빈값을 비교하여 결과를 불리언 값으로 반환합니다. 두 값이 모두 3으로 일치하므로 true가 출력됩니다.