문제 설명
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;
};
'프론트엔드 개발[Front-End Development] > Coding Test' 카테고리의 다른 글
[CT-L] 75. Sort Colors (0) | 2022.11.22 |
---|---|
[CT-L] 49. Group Anagrams (0) | 2022.11.22 |
[CT-L] 88. Merge Sorted Array (0) | 2022.11.21 |
[CT-L] 215. Kth Largest Element in an Array (0) | 2022.11.21 |
[CT-L] 122. Best Time to Buy and Sell Stock II (0) | 2022.11.21 |