nums
는 숫자로 이루어진 배열입니다.
가장 자주 등장한 숫자를k
개수만큼 return해주세요.
nums = [1,1,1,2,2,3],
k = 2
return [1,2]
nums = [1]
k = 1
return [1]
numsObj
numsObj
를 key와 value로 이루어진 배열을 arr
에 할당arr.sort((a, b) => (b[1] - a[1]))
k
번째까지만 잘라내서 Number
형태로 리턴function topK(nums, k) {
const numsObj = {};
nums.forEach(el => {
numsObj[el] == undefined ? numsObj[el] = 1 : numsObj[el]++;
});
let arr = Object.entries(numsObj)
return arr.sort((a, b) => (b[1] - a[1])).slice(0,k).map(el => Number(el[0]));
}
const nums = [2,2,3,1,1,1];
const k =2;
console.log(topK(nums, k));
function topK(nums, k) {
const numsObj = {};
for (let num of nums) {
numsObj[num] == undefined ? numsObj[num] = 1 : numsObj[num]++;
}
const objKey= Object.keys(numsObj).sort()
const objValue = Object.values(numsObj).sort((a,b) => b-a);
const newobjValue = []
let result = 0;
let result2;
for (let i=0; i<nums.length; i++) {
objKey.push(objValue[i])
}
if (objKey[0][0]==='-') {
return objKey[0]*-1
}
result = objKey.join('').substr(0,k).split('')
return result.map(el => Number(el))
}
const nums = [1,1,1,2,2,3];
const k =2;
console.log(topK(nums, k)) // [1,2]
test case 5개 중 1개를 통과못하고 있는 코드..
이유는 인자로 음수를 받을 경우 객체로 변환 시 정렬이 내림차순으로 정렬되지 않는 문제.. 고로.. 다시 짜야하는 코드..
21-05-09 다시 짠 코드로 글 수정 완료