CodeKata

wonkeunC·2021년 5월 6일
0

CodeKata

목록 보기
2/3
post-thumbnail

문제

nums는 숫자로 이루어진 배열입니다. 가장 자주 등장한 숫자를 k 개수만큼 return해주세요.


나의 코드

function topK(n,k) {
// n 배열의 요소들의 각각의 개수를 구해 객체로 만든다
 1 | const obj = {};
 2 | for (let i = 0; i < n.length; i++) {
 3 |   if (!obj[n[i]]) {
 4 |     obj[n[i]] = 0;
 5 |   }
 6 |   obj[n[i]]++
 7 | }
 8 | // 그런데 객체로 만드는 과정에서 key를 기준으로 자동 정렬되기 때문에 value를 기준으로 정렬한다
 9 |  const sortedNums = Object.values(obj).sort(function(a, b) {
 10|    return b - a;});
 11|  // 정렬한 value인 sortedNums에서 k만큼 뽑고 그 뽑힌 value로 key를 구한다
 12|    const result = [];
 13|  for (let j=0; j<k; j++){
 14|    result.push(Number(Object.keys(obj).find(key => obj[key] === sortedNums[j])));
 15|   }
 16|  // 최종 결과를 반환한다
 17|  return result
 18| }
let n = [1,1,1,1,2,2,2,3,3,4]
.
2 | for (let i = 0; i < n.length; i++) {
3 | if(!obj[n[i]])
4 |  obj[n[i]] = 0;
.
설명 :  
3 | obj {n : i}
4 | n 배열안에 있는 값이 obj{key :} key 값이 된다. 
  | for문을 돌면서 | obj[n[i]] |,즉 { n 배열의 i 번째 값이 }  




profile
개발자로 일어서는 일기

0개의 댓글