function solution(array) {
let map = new Map();
// Map 객체 초기화
for(let i = 0; i <= Math.max(...array); i++){
map.set(i, 0);
}
// array 배열의 원소값과 일치하는 Map 객체의 key를 증가시킨다
for(let i = 0; i < array.length; i++){
map.set(array[i], map.get(array[i]) + 1);
}
// Map 객체의 value만 모아서 배열로 만든다
let arr = Array.from(map.values());
// 최대값 산출
let max = Math.max(...arr);
// 최대값이 하나만 있다면 max, 여러 개 중복된다면 -1 출력
if(arr.indexOf(max) !== arr.lastIndexOf(max)){
return -1;
} else {
return arr.indexOf(max);
}
}
예전에 최빈값 문제를 풀 때 사용했던 Map 객체를 활용해서 풀어봤다.
사실 그 때는 최빈값을 풀 때 Map 객체가 가장 편하다 라는 말을 듣고 그냥 썼었는데,
실행 시간을 보니 생각보다 긴 시간이 걸려서 놀랐다.
다른 분들 풀이를 보니, Map 객체를 사용하신 분들도 많이 보이기 때문에
접근법은 문제가 없다고 판단한다.