문제 링크 (opens new window)

# 문제 설명

  1. 해시맵과 정렬 적절히 섞어서 풀었다.
  2. 우선순위 큐가 필요한가?
class Solution {
    func topKFrequent(_ words: [String], _ k: Int) -> [String] {
        var dict: [String: Int] = [:]
        var freq: [Int: [String]] = [:]
        var result: [String] = []

        for word in words {
            dict[word, default: 0] += 1
        }
        for (key, value) in dict {
            freq[value, default: []] += [key]
        }
        for key in freq.keys.sorted(by: {$0 > $1}) {
            for str in freq[key]!.sorted(by: {$0 < $1}) {
                result.append(str)
                if result.count == k { return result }
            }
        }

        return result
    }
}