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));
}
https://www.w3schools.com/jsref/jsref_map.asp
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
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;
});