중복된 항목이 제거된 숫자값들을 담은 배열을 생성
각 고유한 항목의 갯수만큼의 요소에 0이 담긴 배열을 생성
-> let nums = [1,2,3,1,2,3,1,1,1,1,2,2] 를 입력한 경우
[1, 3, 2] 값을 가진 배열을 생성하고 [0, 0, 0] 배열을 생성한다.
추후 각 요소의 갯수를 의미한다.
원본 입력배열의 값을 map 메소드를 사용하여 해당하는 값이 나올 때 마다
갯수배열의 지정위치에 1씩 더해줌.
[1, 3, 2] <- 고유한 값들을 담은 배열
[0, 0, 0] <- 각 값들의 개수를 의미하며 nums 배열을 돌며 매칭되는 값이 나올 때 마다 해당 위치에 1 씩 더해준다.
예를 들어 nums배열의 첫번째값으로 1이 나오면 0번째 값이 0에서 1로 바뀐다.
가장 큰 개수를 가진 값을 return 해줄 배열에 push해준다.
이것을 k번 반복한다.
function topK(nums, k) {
// 여기에 코드를 작성해주세요.
const j = new Set(nums);
const jj = [...j];
const returnArr = [];
jjj = [];
jj.map((value, index)=>jjj[index] = 0);
nums.map((value, i) => {
let k = jj.indexOf(value);
jjj[k]++;
})
for(let i=0 ; i<k ; i++){
let m = Math.max(...jjj);
let n = jjj.indexOf(m);
let max = jj[n];
returnArr.push(max);
jjj.splice(n,1);
jj.splice(n,1);
}
return returnArr;
}
console.log(topK(nums, 2));
module.exports = { topK };