리트코드 347번 Top K Frequent Elements (python)

Kim Yongbin·2023년 9월 29일
0

코딩테스트

목록 보기
82/162

Problem

LeetCode - The World's Leading Online Programming Learning Platform

Solution

내 풀이

from typing import List

class Solution:
    def topKFrequent(self, nums: List[int], k: int) -> List[int]:
        freq_dict = {}

        for n in nums:
            if freq_dict.get(n) is None:
                freq_dict[n] = 1
            else:
                freq_dict[n] += 1
        sorted_dict = sorted(freq_dict.items(), key=lambda v: v[1], reverse=True)
        return [pair[0] for pair in sorted_dict[:k]]

단순하게 개수를 적은 뒤 개수를 기준으로 정렬하여 k개 만큼 뽑았다.

다른 풀이 - Counter

from typing import List
from collections import Counter

class Solution:
    def topKFrequent(self, nums: List[int], k: int) -> List[int]:
        counter = Counter(nums)
        return [pair[0] for pair in counter.most_common(k)]

성능에는 큰 차이가 없으나 훨씬 간단하게 구할 수 있다.

Reference

파이썬 알고리즘 인터뷰 31번

profile
반박 시 여러분의 말이 맞습니다.

0개의 댓글