Top k frequent elements - leetcode(347)

llama·2022년 3월 16일

알고리즘

목록 보기
10/16
post-thumbnail

Top k frequent elements

요구사항

  • Given an integer array nums and an integer k, return the k most frequent elements. You may return the answer in any order.
    => 정수 배열 Nums와 정수 k가 주어진다면 가장 빈번한 요소순으로 k개의 요소를 반환한다.

Solution

from collections import Counter

preInput = [1, 1, 1, 2, 2, 3]
pre = 2


class Solution:
    def topKFrequent(self, nums, k):
        # Counter()를 이용하면 배열의 중첩된 요소를 카운팅하여 딕셔너리로 반환해준다.
        # key는 중첩된 요소, value는 중첩된 개수가 들어있다.
        # most_common()를 이용하면 중첩이 많은 순으로 정렬되고 인자를 넣는다면 가장 많은 순서대로 인자만큼 끊어서 보여준다.
        mosts = Counter(nums).most_common(k)

        # [(k, v), (k, v)]로 담겨있기 때문에 for문을 이용하여 key만 사용했다.
        return [key for key, _ in mosts]


sol = Solution()

print(sol.topKFrequent(preInput, pre))

📌 코드 풀이

  1. collections의 Counter를 가져온다.
  2. Counter(nums).most_common(k)로 중첩된 요소를 카운팅하고, 그중 중첩이 많이된 순으로 K개만큼 끊어서 변수에 담는다.
  3. dict.items()와 같은 형태로 담겨 있기 때문에 for문을 이용하여 key만 담고 반환하면 된다.

leetcode

https://leetcode.com/problems/top-k-frequent-elements/

profile
요리사에서 프론트엔드 개발자를 준비하는중 입니다.

0개의 댓글