배열 내 최빈값을 리턴해야 함. 단, 최빈값이 여러개면 -1을 리턴해야 함
function solution(array) {
if (array.length === 1) {
return array[0];
}
// map 형식으로 key와 빈도수를 저장
let obj = {};
// value 배열
let values = [];
for (let el of array) {
if (obj[el]) {
obj[el]++;
} else {
obj[el] = 1;
}
}
// key 배열
const keys = Object.keys(obj).map(el => parseInt(el));
for (let i = 0; i < keys.length; i++) {
if (obj.hasOwnProperty(keys[i])) {
values.push(obj[keys[i]]);
}
}
// 최빈값
const max = Math.max(...values);
let mode = [];
for (let key in obj) {
if (obj.hasOwnProperty(key) && obj[key] === max) {
mode.push(parseInt(key));
}
}
if (mode.length > 1) {
return -1;
} else {
return mode[0];
}
}
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;
}