Codekata 2-4
1720 단어 JavaScriptJavaScript
문제
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 arr = nums.filter((el, index, Arr) => Arr.indexOf(el)===index)
let obj = {};
for(let i=0; i<arr.length; i++){
let newArr = arr[i];
obj[newArr]=0;
for(let j=0; j<nums.length; j++){
if(newArr === nums[j]){
obj[newArr] = obj[newArr] + 1;
}
}
}
//Key 뽑아가기
const key = Object.keys(obj);
//console.log("key",key);
let sortKey = key.sort((a,b) => ( obj[b] - obj[a] ))
//console.log(sortKey);
let result = [];
for(let i=0; i<k; i++){
result.push(parseInt(sortKey[i]))
}
return result;
}
filter함수를 이용해 배열안에 있는 요소를 중복제거 하고 객체에서 Key와 Value를 구분한 다음에 Value 값이 큰 순서대로 sort하여 sortKey[i]에 반복문을 걸어서 result에 값을 push 해주었다.
Model solution
function topK(nums, k) {
let obj = {};
let arr = [];
nums.forEach(el => {
if (obj[el]) {
obj[el]++;
} else {
obj[el] = 1;
}
});
for (let properyName in obj) {
arr.push([properyName, obj[properyName]]);
}
return arr.sort((a, b) => (b[1] - a[1])).slice(0,k).map(el => Number(el[0]));
}
topK([1,2,2,2,3,4,4,4,4] , 2);
Model solution은 이해가 안가서 나중에 멘토님에게 질문드려야겠다 ㅜㅜ
Author And Source
이 문제에 관하여(Codekata 2-4), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@go286/Codekata-2-4저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)