Daily LeetCode Challenge - 692. Top K Frequent Words

Min Young Kim·2022년 10월 19일
0

algorithm

목록 보기
11/198

Problem From.
https://leetcode.com/problems/top-k-frequent-words/

오늘 문제는 여러 함수들을 적절하게 활용하면 쉽게 풀리는 문제였다.
주어진 리스트에서 각각이 몇개가 되는지 센다음, 중복된 갯수가 많은 단어부터 K 개 만큼 반환하는 문제였다.

코드를 먼저 보자

class Solution {
    fun topKFrequent(words: Array<String>, k: Int): List<String> {
        
        return words.groupingBy { it }.eachCount()
        .toList()
        .sortedBy { (s, _) -> s }
        .sortedByDescending { (_, v) -> v }
        .map { it.first }
        .take(k)
        
    }
}

먼저, groupingBy 함수와 .eachCount() 를 써서 리스트안에 단어를 key 로 하고 중복된 갯수를 value 로 하여 묶었다.
sortedBy (s,) 를 통해 사전순으로 나열한 뒤,
sortedBy (
,v) 를 통해 중복된 갯수의 내림차순으로 정렬하였다.
map {it.first} 를 통해 key 값만 가져오며 .take(k) 를 통해 k 개 만큼만 가져오도록 하였다.

문제 풀이에 있어서 여러 함수를 적절히 잘 활용하는 능력도 중요한 것 같다.

profile
길을 찾는 개발자

0개의 댓글