Problem From.
https://leetcode.com/problems/top-k-frequent-elements/
오늘 문제는 배열이 주어졌을때, 그 배열에서 많이 나온 숫자 순으로 나열하여 다시 반환하는 문제였다.
먼저 배열을 한번 순회하면서 숫자와 나온 횟수를 map 에 저장하고, 그 map 의 value 를 내림차순으로 나열한뒤에, 다시 그 순서대로 map 에서 key 를 가지고와서 반환해주면 되었다.
class Solution {
fun topKFrequent(nums: IntArray, k: Int): IntArray {
val map = HashMap<Int, Int>()
nums.forEach {
if(map.containsKey(it)) {
map[it] = map[it]!! + 1
}else {
map[it] = 1
}
}
val modList = map.toList().sortedByDescending { it.second }
val answer = arrayListOf<Int>()
for(i in 0 until k) {
answer.add(modList[i].first)
}
return answer.toIntArray()
}
}