[Leetcode] Top K Frequent Elements

내가 생각한 로직

  1. 빈 객체를 만든다.
  2. nums를 돌며 객체의 key값을 nums의 고유한 값들로, value값을 그 고유한 값의 개수로 만들어준다.
  3. Object.entries를 이용하여 배열의 형식으로 만들어준 뒤 value값을 기준으로 내림차순 sort 해준다.
  4. 그리고 다시 mapping하여 key값만 가진 새로운 배열 만들기
  5. 그리고 k개만큼 return 해주기
function topK(nums, k) {
let obj = {};
  for(let x of nums){
   obj[x]= obj[x] + 1 || 1 
  }

 return Object.entries(obj).sort((a,b) => b[1] - a[1]).map(a => parseInt(a[0])).slice(0, k)

}

만약 map일경우

   for(n of nums){
     map.set(n, map.get(n)+1 || 1 )
   }
  

마무리

새롭게 다시 배운 Object.entries!

자주 써먹어야지,, + Object.keys, Object.values 도 ^^^ 유용한 녀석들 ㅎ

좋은 웹페이지 즐겨찾기