[LeetCode] 692. Top K Frequent Words

김민우·2022년 10월 19일
0

알고리즘

목록 보기
42/189

- Problem

692. Top K Frequent Words

주어진 문자열 배열 words에서 빈도 수가 높은 순서대로 k만큼 출력하는 문제이다.

만약 빈도 수가 같은 단어라면 사전 순서대로 출력한다.

- 내 풀이

class Solution:
    def topKFrequent(self, words: List[str], k: int) -> List[str]:
        words.sort()
        words_counter = collections.Counter(words)
        most_frequent_words = [word for word, _ in sorted(words_counter.items(), key = lambda x : (x[1]), reverse = True)]
        
        return most_frequent_words[:k]

한 줄이라도 줄여보자면...

class Solution:
    def topKFrequent(self, words: List[str], k: int) -> List[str]:
        words_counter = collections.Counter(words)
        most_frequent_words = [word for word, _ in sorted(words_counter.items(), key = lambda x : (-x[1], x[0]))]

        return most_frequent_words[:k]
  1. 주어진 문자열 words를 사전 순서대로 정렬한다.
  2. Counter 모듈을 이용하여 빈도 수를 계산한다.
  3. Counter한 값에서 빈도 순서대로 정렬한 리스트를 정의 후, k개 만큼 반환한다.

- 결과

profile
Pay it forward.

0개의 댓글