function solution(array) {
let obj = {};
let answer = [];
array.forEach((n) => obj[n] = ++obj[n] || 1);
for(let key in obj){
answer.push([key, obj[key]]);
}
answer.sort((a,b) => b[1] - a[1]);
if(array.length === 1) {
return array[0];
}else if(answer[0][1] === answer[1][1]){
return -1;
}else{
return Number(answer[0][0]);
}
}
이유 : 케이스 다 고려하지 못해서 틀림.
오류 케이스 : [1,1]
answer = [[1,1]] 이 되어 answer[0][1]이 존재하지 않으므로 오류가 난다.
ex) array = [1,3,2,2]
function solution(array) {
let map = new Map();
// map 초기화 : { 0=>0, 1=>0, 2=>0, 3=>0 }
for(let i = 0; i <= Math.max(...array); i++){
map.set(i,0);
}
// 갯수를 세어줌 : { 0=>0, 1=>1, 2=>2, 3=>1 }
// key를 조회해서 해당 value에 1을 더해준다.
for(let i = 0; i < array.length; i++){
map.set(array[i], map.get(array[i]) + 1);
}
// map의 value만 array에 따로 저장한다.
// arr = [0,1,2,1]
let arr = Array.from(map.values());
// value의 최댓값을 구한다.
// max = 2
let max = Math.max(...arr);
// 최댓값이 중복되면 -1을 return하고, 아니면 index를 반환한다.
// 2
if(arr.indexOf(max) !== arr.lastIndexOf(max)){
return -1;
}else{
return arr.indexOf(max);
}
}
⭐️ Map 객체
- key가 있다는 점에서 object와 유사하지만 key에 다양한 자료형을 허용한다는 점에서 차이가 있다.
- { key => value } 형태로 저장된다.
Map 만들기 : new Map( )
set
: key와 value를 저장한다.
map.set(key, value)
get
: 해당 key의 value를 조회한다.
map.get(key)
이외에도 has, delete, clear, size가 있다.
자세한 내용은 아래 링크 참조)
https://ko.javascript.info/map-set