최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
깔끔하고 간결하진 않지만 일단 풀었으니까...!ㅎ
function getKeyByValue(obj, maxValue) {
let arr = []
for(let [key, value] of obj) {
if (value == maxValue) arr.push(key)
}
return arr
}
function solution(array) {
if(array.length == 1) return array[0]
if(array.length == 0) return -1
const arrMap = new Map()
let max = 0
for(let i = 0; i < array.length; i++) {
if(!arrMap.has(array[i])) arrMap.set(array[i], 1)
else arrMap.set(array[i], arrMap.get(array[i]) + 1)
if(arrMap.get(array[i]) > max) max += 1
}
const findKey = getKeyByValue(arrMap, max)
return findKey.length == 1 ? findKey[0] : -1
}
✔문제출처: 프로그래머스