프린세스 다이어리

자바스크립트 가장 자주 등장하는 숫자 문제 본문

자료구조, 알고리즘

자바스크립트 가장 자주 등장하는 숫자 문제

개발공주 2021. 11. 8. 09:07
728x90

문제

nums는 숫자로 이루어진 배열입니다. 가장 자주 등장한 숫자를 k 개수만큼 return해주세요.

 

예시

nums = [1,1,1,2,2,3], k = 2

return [1,2]

 

nums = [1], k = 1

return [1]

 

접근방향

문제에 최대 nums의 길이나 k의 범위가 제시되어 있지 않아 key를 이용해 상수 시간 복잡도로 접근할 수 있도록 object을 활용하여 풀었다. 마지막에 Object.keys를 활용하여 정렬을 할 때, string 자료형으로 배열에 들어가기 때문에 map함수로 number 형으로 바꿔주는 것에 유의한다.

 

해답

function topK(nums, k) {
  let obj = {};
  for (let i = 0; i < nums.length; i++) {
    if (nums[i] in obj) {
      obj[nums[i]]++;
    } else {
      obj[nums[i]] = 1;
    }
  }
  
  let answer = [];
  answer = Object.keys(obj).sort((a, b) => obj[b] - obj[a]);
  return answer.slice(0, k).map(num => +num);
}
728x90
Comments