nums
는 숫자로 이루어진 배열입니다.
가장 자주 등장한 숫자를 k
개수만큼 return해주세요.
nums = [1,1,1,2,2,3],
k = 2
return [1,2]
nums = [1]
k = 1
return [1]
function topK(nums, k) {
let numObj = {};
for (let num of nums){
numObj[num] ? numObj[num] += 1 : numObj[num] = 1
}
let keyOfObj = [];
for (let key in numObj) {
keyOfObj.push([key, numObj[key]])
}
let sortedByKey = keyOfObj.sort(function (a, b) {
return b[1] - a[1];
});
let result = [];
for (let key of sortedByKey) {
result.push(key[0]);
}
return result.slice(0, k).map((i) => i * 1);
}
- 굉장히 보오옥잡하고 복잡하기보다는 읽기가 어렵다. 내가 봐도 잘 모르겠다..!
포인트는
1) 개수정보를 담은 새로운 오브젝트 만들기
2) 해당 오브젝트를 개수(value)를 기준으로 정렬
3) k개수만큼 key값 return하기
4) 이때 type은 num이여야함
function topK(nums, k) {
const numObj = {};
for (let num of nums) numObj[num] ? (numObj[num] += 1) : (numObj[num] = 1);
const sortedObj = Object.entries(numObj).sort(function (a, b) {
return b[1] - a[1];
});
return sortedObj.map(key=> Number(key[0])).slice(0, k)
}
Object.entries(객체)
를 사용하면 key와 value로 이루어진 배열을 요소로 갖는 배열을 만들 수 있다!
첫시도에 💩 모냐고요ㅠㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ