최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array
가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
array
의 길이 < 100array
의 원소 < 1000array | result |
---|---|
[1, 2, 3, 3, 3, 4] | 3 |
[1, 1, 2, 2] | -1 |
[1] | 1 |
입출력 예 #1
입출력 예 #2
입출력 예 #3
※ 공지 - 2022년 10월 17일 제한 사항 및 테스트케이스가 수정되었습니다.
function solution(array) {
if (array.length==1) return +array;
let arr = [...new Set(array)];
if (arr.length==1) return array[0];
let nArr = arr.reduce((a,c)=>[...a, [array.filter(e=>e==c).length,c]],[]);
let sArr = nArr.sort((a,b)=>b[0]-a[0]);
return sArr[0][0]==sArr[1][0]? -1 : sArr[0][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;
}