loading
본문으로 바로가기

문제 설명

Medium

  • 정수 배열 nums와 정수 k가 주어지면 가장 빈도가 높은 k개의 요소를 반환합니다. 
  • 어떤 순서로든 답변을 반환할 수 있습니다.

 

**문제에서 요구하는 풀이는 제시된 nums 배열의 요소들의 개수를 구하고 개수의 큰 수를 기준으로 반환하는 것이다.

변수 k는 반환할 배열의 요소 개수이다.

 

접근

var topKFrequent = function(nums, k) {
    let numObj = {}
    nums.forEach((v, idx) => {
    	//배열을 요소들을 종류별로 고유 키를 설정하며, 키에 해당되는 값의 개수를 증가시켜 numObj 객체에 할당한다.
        nums.indexOf(v) !== undefined ? numObj[v] = (numObj[v] || 0)+1  : null;
    });
    
    let tempArr = [];
    let result = [];
    
    //객체의 key 값이 중복으로 사용되는 것이 아니므로 값의 큰 수 대로 정렬을 하기위해, 1번째로 [키 값, 개수 값]으로 배열화하였다.
    for (let numb in numObj) {
        tempArr.push([numb, numObj[numb]]);
    }

	//개수의 값 기준으로 내림차순 정렬을 하였다.
    tempArr.sort((a,b) => b[1]-a[1]);
    
    //정렬된 배열을 이용해 제시된 변수 k까지 result 배열에 push하여 반환하였다.
    for (let i=0; i<k; i++) {
        result.push(Number(tempArr[i][0]));
    }
    
    return result;
};

 

 

 

Top K Frequent Elements - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com