반응형
Notice
Recent Posts
Recent Comments
- Today
- Total
작심삼일
[LeetCOde] 692 | Top K Frequent Words | Python 본문
728x90
반응형
문제 링크: https://leetcode.com/problems/top-k-frequent-words/
문제
Given an array of strings words and an integer k, return the k most frequent strings.
Return the answer sorted by the frequency from highest to lowest. Sort the words with the same frequency by their lexicographical order.
조건
- 1 <= words.length <= 500
- 1 <= words[i].length <= 10
- words[i] consists of lowercase English letters.
- k is in the range [1, The number of unique words[i]]
내 풀이
dictionary를 이용해 word의 개수를 센다.
그러면 dictionary에는 각각 (word, 개수)로 저장이 된다.
이를 먼저 빈도수로 정렬하고, 그 후에 알파벳 순으로 정렬되어야 하기 때문에 key=lambda x:(-x[1], x[0])으로 정렬한다.
-x[1]은 개수가 큰 것부터 정렬되게하는 것이고, x[0]은 알파벳 순서다.
-x[1]을 x[0]보다 앞에 둔 이유는 먼저 빈도수로 정렬되어야 하기 때문이다.
그 후에 정렬된 dictionary를 앞에서부터 k개 뽑아서 리턴한다.
코드
class Solution:
def topKFrequent(self, words: List[str], k: int) -> List[str]:
freq = defaultdict(int)
ans = []
for word in words:
freq[word] += 1
freq = sorted(freq.items(), key=lambda x: (-x[1], x[0]))
for i in range(k):
ans.append(freq[i][0])
return ans
728x90
반응형
'스터디 > 코테' 카테고리의 다른 글
[LeetCode] 219 | Contains Duplicate II | Python (0) | 2022.10.21 |
---|---|
[LeetCode] 12 | Integer to Roman | Python (0) | 2022.10.20 |
[LeetCode] 38 | Count and Say | Python (0) | 2022.10.18 |
[2095] Delete the Middle Node of a Linked List | Python (0) | 2022.10.14 |
[LeetCode] 237 | Delete Node in a Linked List | Python (0) | 2022.10.13 |
Comments