자바스크립트 배열의 최빈값 구하기
배열은 자바스크립트에서 가장 일반적으로 사용되는 데이터 구조 중 하나입니다. 배열에는 여러 가지 값이 포함될 수 있고, 때로는 배열에서 가장 자주 나타나는 값인 최빈값(mode)을 찾아야 할 때가 있습니다. 이번 기사에서는 자바스크립트를 사용하여 배열에서 최빈값을 찾는 방법을 알아보겠습니다.
방법 1: 객체 사용
가장 간단하고 효율적인 방법 중 하나는 객체를 사용하여 배열의 각 요소를 카운팅하는 것입니다. 우선, 빈 객체를 만들고 배열의 각 요소를 반복하면서 해당 요소를 객체의 속성으로 사용합니다. 해당 속성의 값을 1씩 증가시킵니다. 배열을 모두 반복한 후에는 객체에서 가장 큰 값을 가진 속성을 찾아 최빈값으로 결정합니다.
function findMode(arr) {
const count = {};
let maxCount = 0;
let mode;
for (let i = 0; i < arr.length; i++) {
if (count[arr[i]] === undefined) {
count[arr[i]] = 1;
} else {
count[arr[i]]++;
}
if (count[arr[i]] > maxCount) {
maxCount = count[arr[i]];
mode = arr[i];
}
}
return mode;
}
const numbers = [1, 2, 3, 4, 4, 4, 5, 5, 6];
const mode = findMode(numbers);
console.log(`최빈값은 ${mode}입니다.`);
방법 2: 배열 및 Set 사용
ES6부터는 Map
과 Set
이라는 새로운 데이터 구조가 도입되었습니다. Map
은 객체와 비슷한 형태로 데이터를 저장하고 접근할 수 있으며, Set
은 중복 요소 없이 값을 저장합니다. 이러한 기능을 활용하여 배열의 각 요소를 Map
객체에 저장하고, 이미 존재하는 요소의 개수를 카운팅합니다. 마지막으로, 가장 많이 나타난 요소를 찾아 최빈값으로 결정합니다.
function findMode(arr) {
const countMap = new Map();
let maxCount = 0;
let mode;
arr.forEach((element) => {
if (countMap.has(element)) {
countMap.set(element, countMap.get(element) + 1);
} else {
countMap.set(element, 1);
}
});
countMap.forEach((count, element) => {
if (count > maxCount) {
maxCount = count;
mode = element;
}
});
return mode;
}
const numbers = [1, 2, 3, 4, 4, 4, 5, 5, 6];
const mode = findMode(numbers);
console.log(`최빈값은 ${mode}입니다.`);
결론
이번 기사에서는 자바스크립트에서 배열의 최빈값을 구하는 방법을 알아보았습니다. 두 가지 방법을 소개했지만, 실제로는 다양한 방식으로 구현할 수 있습니다. 최빈값을 구하는 알고리즘은 데이터 분석 및 통계 분야에서 자주 활용되는 것으로, 이를 기반으로 다양한 기능을 구현할 수 있습니다.