최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
function solution(array) {
let arr = []
let init = 0;
array = array.sort(function(a,b){return a-b});
for(let i = 0; i < array.length; i++){
if(array[i] !== array[i+1]){
arr.push(array.slice(init,i+1))
init = i+1
}
}
arr = arr.sort(function(a,b){return b.length-a.length})
return array.length === 1 ? array[0] :
arr[0].length === arr[1].length ? -1 : arr[0][0]
}
array
안의 요소가 모두 같은 값일 경우 arr[1]
이 undefined가 되므로 arr[1].length
을 구할 수 없다. arr.length > 1 &&
라는 조건을 추가했다function solution(array) {
let arr = []
let init = 0;
array = array.sort(function(a,b){return a-b});
for(let i = 0; i < array.length; i++){
if(array[i] !== array[i+1]){
arr.push(array.slice(init,i+1))
init = i+1
}
}
arr = arr.sort(function(a,b){return b.length-a.length})
return array.length === 1 ? array[0] :
arr.length > 1 && arr[0].length === arr[1].length ? -1 : arr[0][0]
}
array
를 오름차순으로 정렬한다array = array.sort(function(a,b){return a-b});
// [1,3,3,3,2,4] 👉 [1,2,3,3,3,4]
arr
에 차례로 삽입한다let arr = []
let init = 0;
for(let i = 0; i < array.length; i++){
if(array[i] !== array[i+1]){
arr.push(array.slice(init,i+1))
init = i+1
}
}
// [1,2,3,3,3,4] 👉 [[1],[2],[3,3,3],[4]]
arr
을 요소의 길이를 기준으로 내림차순으로 정렬한다.arr[0][n]
은 최빈값이다.arr[0][0]
으로 반환할 것이다arr = arr.sort(function(a,b){return b.length-a.length})
// [[1],[2],[3,3,3],[4]] 👉 [[3,3,3],[1],[2],[4]]
array
의 길이가 1이면 array[0]
을 반환하고-1
을 반환하고arr[0][0]
으로 반환한다return array.length === 1 ? array[0] :
// array = [1] 👉 1
arr.length > 1 && arr[0].length === arr[1].length ? -1 :
// arr = [[1,1,1,1],[2,2,2,2],[3]] 👉 -1
arr[0][0]
// arr = [[3,3,3],[1],[2],[4]] 👉 3