code-kata(Week2 - Day4)(TIL)

이해용·2022년 5월 19일
0
post-thumbnail

문제

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

nums = [1,1,1,2,2,3],
k = 2

return [1,2]

nums = [1]
k = 1

return [1]

문제 풀기 전 생각

처음 생각시 팀원들과 객체로 접근하여 풀었다는 생각까지는 했으나 객체에서 key 값을 가져오는 방법을 어떻게 해야할지 모르겠다...
답을 찾아보니 공식처럼 외우라고만 되어있어 정리만하고 이해하는 것은 포기했다...

풀이

오늘 풀이는 공식이라고해서 그냥 외우는 방법밖에 없을 거 같다는 생각이 들었다.

function topK(nums, k) {
  const Obj = nums.reduce((acc, cur) => { 
    acc[cur] = (acc[cur] || 0)+1; 
    return acc;
  }, {});
  
  let sortValue = Object.keys(Obj).sort((a,b) => Obj[b]-Obj[a]);
  return sortValue.slice(0, k).map(item => parseInt(item));
}

나온 method

map()

https://www.w3schools.com/jsref/jsref_map.asp

reduce()

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

sort()

obj.sort((a, b) => {
    return a.key - b.key;
});

참고 및 출처
https://habitual-history.tistory.com/entry/Code-Kata-9?category=1024190
https://www.w3schools.com/jsref/jsref_map.asp
employees.sort((a, b) => {
return a.age - b.age;
});

profile
프론트엔드 개발자입니다.

0개의 댓글