220908 Code Kata

이승훈·2022년 9월 11일
0
post-thumbnail

  1. 중복된 항목이 제거된 숫자값들을 담은 배열을 생성

  2. 각 고유한 항목의 갯수만큼의 요소에 0이 담긴 배열을 생성
    -> let nums = [1,2,3,1,2,3,1,1,1,1,2,2] 를 입력한 경우
    [1, 3, 2] 값을 가진 배열을 생성하고 [0, 0, 0] 배열을 생성한다.
    추후 각 요소의 갯수를 의미한다.

  3. 원본 입력배열의 값을 map 메소드를 사용하여 해당하는 값이 나올 때 마다
    갯수배열의 지정위치에 1씩 더해줌.
    [1, 3, 2] <- 고유한 값들을 담은 배열
    [0, 0, 0] <- 각 값들의 개수를 의미하며 nums 배열을 돌며 매칭되는 값이 나올 때 마다 해당 위치에 1 씩 더해준다.
    예를 들어 nums배열의 첫번째값으로 1이 나오면 0번째 값이 0에서 1로 바뀐다.

  4. 가장 큰 개수를 가진 값을 return 해줄 배열에 push해준다.

  5. 이것을 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 };
profile
Beyond the wall

0개의 댓글