💡 최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
입출력 예시
array | result |
---|---|
[1,2,3,3,3,4] | 3 |
[1,1,2,2] | -1 |
[1] | 1 |
function solution(array) {
const getSum = array.reduce(
(ac, v) => ({ ...ac, [v]: (ac[v] || 0) + 1 }),
{}
);
const getSumValue = Object.values(getSum);
const frequency = Object.keys(getSum).filter((key) => {
return getSum[key] === Math.max(...getSumValue);
});
if (frequency.length > 1) {
return -1;
} else {
return Number(frequency)
}
}
첫번째로 reduce
메서드 사용해서 배열의 각 요소를 순회하며 객체 형태로 빈도수를 계산.
const getSum = array.reduce(
(ac, v) => ({ ...ac, [v]: (ac[v] || 0) + 1 }),
{}
);
// {1:1, 2:1, 3:3, 4:1}
Object.values
로 빈도수 값만 배열로 추출(value값), Object.keys
와 filter
메서드 이용해서 getSum 객체에서 가장 높은 빈도수를 가진 프로퍼티를 필터링.
const getSumValue = Object.values(getSum); // [1,1,3,1]
const frequency = Object.keys(getSum).filter((key) => {
return getSum[key] === Math.max(...getSumValue);
}); // ['3']