코딩에 대한 이해력을 높이기 위한 작성된 글입니다.
여기의 내용은 @NeetCode 유튜버 동영상을 기반으로 작성되었으므로, 문제 발생 시 즉각적으로 삭제하도록 하겠습니다.

nums = [2,3,1,1,2,1] 을 발생빈도에 따라 정리하게 되면 아래와 같은 테이블로 정리하여, Sorting을 통하여 Most Frequent 값을 도출 해낼 수 있습니다.
하지만, Time Complexity 차원에서 효율적이지 않을 것 입니다.
| Value | Count |
|---|---|
| 2 | 2 |
| 3 | 1 |
| 1 | 3 |
이에, Bucket Sort 통해 문제를 풀어보고자 합니다.
| 0 | 1 | 2 | 3 |
|---|---|---|---|
| (3) | (2) | (1) |
class Solution:
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
count = {}
freq = [[] for i in range(len(nums) + 1)]
for n in nums:
count[n] = 1 + count.get(n, 0)
for n, c in count.items():
freq[c].append(n)
res = []
for i in range(len(freq) - 1, 0, -1):
for n in freq[i]:
res.append(n)
if len(res) == k:
return res
아직 많이 부족하지만, 글 읽어주셔서 감사합니다.
궁금한 사항 있으시다면, 댓글 남겨주세요.