<나의 풀이>
function solution(arr) {
let result = {}
let answer = {}
for (let x of arr) {
result[x] = (result[x] || 0) + 1
}
// 객체로 각 요소별 갯수가 key와 value로 출력됨
// {1: 2, 2: 1, 3: 4, 4: 3}
let count = Object.values(result).sort((a, b) => b - a)
// 최빈값의 value를 count 변수에 담음
let resultKey = Object.keys(result)
answer = resultKey.find((key) => result[key] == count[0])
// 해당 value의 키 값을 가져옴
const countMax = count.filter((max) => max == count[0]).length
// 최빈값의 갯수를 구함.
if (countMax > 1) return -1
return Number(answer)
} // 최빈값이 2 이상이면 -1을 리턴
코드를 효율적으로 짜지 못한 것 같아 다른 사람들의 풀이를 찾아봤다.
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,set 등의 문법공부가 아직 부족해 코드의 의미를 정확하게 해석하지는 못하고 있다. 이 문법을 더 공부해봐야겠다.