function solution(array) {
// 각 숫자의 등장 횟수를 저장하는 객체 생성
const frequencyMap = {};
// 배열을 순회하면서 각 숫자의 등장 횟수를 계산
for (let num of array) {
if (frequencyMap[num] === undefined) {
frequencyMap[num] = 1;
} else {
frequencyMap[num]++;
}
}
// 최빈값 및 등장 횟수 초기화
let mode = -1;
let maxFrequency = 0;
// 객체를 순회하면서 최빈값 찾기
for (let key in frequencyMap) {
if (frequencyMap[key] > maxFrequency) {
mode = parseInt(key);
maxFrequency = frequencyMap[key];
} else if (frequencyMap[key] === maxFrequency) {
// 최빈값이 여러 개이면 -1 반환
mode = -1;
}
}
return mode;
}
다른 풀이들
function solution(array) {
let m = new Map();
for (let n of array) m.set(n, (m.get(n) || 0)+1);
m = [...m].sort((a,b)=>b[1]-a[1]);
return m.length === 1 || m[0][1] > m[1][1] ? m[0][0] : -1;
}
Map 객체
숫자의 등장 횟수를 저장한다
m.get(n) || 0을 통해 해당 숫자가 이전에 등장한 횟수를 가져오며, 만약 없으면 0으로 초기화