문제 링크 (opens new window)

# 문제 설명

  1. swift sort가 O(nlogn)인데 통과되는 이유가 뭘까? 문제 팁에는 O(nlogn)보다 성능 좋으라고 제시되어 있기는 함
  2. 딕셔너리로 빈도수 체크, 빈도수 크기별로 정렬 후에 k개만큼 뽑아오기
class Solution {
    func topKFrequent(_ nums: [Int], _ k: Int) -> [Int] {
        var result: [Int] = []
        var freqs:[(Int, Int)] = []
        var freq: [Int: Int] = [:]
        for i in nums {
            if let _ = freq[i] {
                freq[i]! += 1
            } else {
                freq[i] = 1
            }
        }

        for (key, value) in freq {
            freqs.append((key, value))
        }
        result = freqs.sorted(by: { $0.1 < $1.1 }).reversed()[0..<k].map { $0.0 }

        return result
    }
}