CodeKata
1211 ワード
質問する
numsは数字からなる配列です.最もよく現れる数字をk個返してください.
マイコード
numsは数字からなる配列です.最もよく現れる数字をk個返してください.
マイコード
function topK(n,k) {
// n 배열의 요소들의 각각의 개수를 구해 객체로 만든다
1 | const obj = {};
2 | for (let i = 0; i < n.length; i++) {
3 | if (!obj[n[i]]) {
4 | obj[n[i]] = 0;
5 | }
6 | obj[n[i]]++
7 | }
8 | // 그런데 객체로 만드는 과정에서 key를 기준으로 자동 정렬되기 때문에 value를 기준으로 정렬한다
9 | const sortedNums = Object.values(obj).sort(function(a, b) {
10| return b - a;});
11| // 정렬한 value인 sortedNums에서 k만큼 뽑고 그 뽑힌 value로 key를 구한다
12| const result = [];
13| for (let j=0; j<k; j++){
14| result.push(Number(Object.keys(obj).find(key => obj[key] === sortedNums[j])));
15| }
16| // 최종 결과를 반환한다
17| return result
18| }
let n = [1,1,1,1,2,2,2,3,3,4]
.
2 | for (let i = 0; i < n.length; i++) {
3 | if(!obj[n[i]])
4 | obj[n[i]] = 0;
.
설명 :
3 | obj {n : i}
4 | n 배열안에 있는 값이 obj{key :} key 값이 된다.
| for문을 돌면서 | obj[n[i]] |,즉 { n 배열의 i 번째 값이 }
Reference
この問題について(CodeKata), 我々は、より多くの情報をここで見つけました https://velog.io/@dbk03053/CodeKata-ikc12rhsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol