레벨이 0이라길래 더 간단한 방법으로 풀 수 있지 않을까 하고 여러 고민을 하다가.. 결국 아래와 같이 풀긴 풀었다. 하지만 뭔가 더 좋은 방법이 있을 거라는 생각이 계속 든다.
function solution(array) {
let map = {};
// 배열을 돌면서 해당 요소가 몇 번 나오는지 객체에 담는다.
array.forEach((elem) => {
if (map[elem]) {
map[elem] = map[elem] + 1;
} else {
map[elem] = 1;
}
});
// 가장 많이 나온 개수를 구함
let values = Object.values(map);
let max = Math.max(...values);
// 가장 많이 나온 개수의 index를 구함
let index = values.indexOf(max);
// 가장 많이 나온 개수의 index가 lastIndexOf의 리턴 값과 다르면 최빈 값이 여러개로 간주하여 -1 리턴
if (index !== values.lastIndexOf(max)) return -1;
// 아니면 index의 key값(최빈 값) 리턴
return +Object.keys(map)[index];
}