https://leetcode.com/problems/top-k-frequent-elements/
풀이법은 간단하다.
각 빈도수를 체크해서 hash로 저장하고 이걸 빈도수 역순 정렬해서 k개만큼의 키를 반환해주면 된다.
자바스크립트는 map을 활용하고 파이썬은 딕셔너리를 활용하여 풀었다.
각 언어의 문법을 잘 활용할 수 있는 문제이다.
<JavaScript>
var topKFrequent = function(nums, k) {
const map = new Map();
for(let i=0; i<nums.length; i++){
map.set(nums[i], (map.get(nums[i]) || 0) + 1);
}
const arr = [...map];
return arr.sort((a,b) => b[1]-a[1]).map((item) => item[0]).slice(0, k)
};
<Python>
class Solution:
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
freq = {}
for n in nums:
if n in freq: freq[n] += 1
else: freq[n] = 1
sort = sorted(freq.items(), key=lambda x:x[1], reverse=True)
answer = []
for i in range(k):
answer.append(sort[i][0])
return answer
'알고리즘' 카테고리의 다른 글
[리트코드] 238. Product of Array Except Self (0) | 2022.04.03 |
---|---|
[리트코드] 이진탐색 알고리즘: 33. Search in Rotated Sorted Array (0) | 2022.04.02 |
[리트코드] Greedy 알고리즘 문제: 765. Couples Holding Hands (0) | 2022.03.29 |
[리트코드] Greedy 알고리즘 문제: 134. Gas Station (0) | 2022.03.28 |
[리트코드] Greedy 알고리즘 문제: 2136. Earliest Possible Day of Full Bloom (feat. 이중배열 정렬) (0) | 2022.03.28 |