문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=kotlin
문제
나의 풀이 - 1차
tangerine에 있는 값을 숫자와 빈도수로 나눠서 map에 넣었다. 그리고 map을 value 값으로 정렬 후 k값이 0보다 작아질 때 까지 count하고 그 count 값을 출력해줬다. 테스트 케이스에서는 작동했지만 제출 후 채점에서 오류가 발생했다.
class Solution {
fun solution(k: Int, tangerine: IntArray): Int {
var kk: Int = k
var count = 0
var map = mutableMapOf<Int, Int>()
tangerine.map {
map[it] = map.getOrDefault(map[it]?: 0, 0) + 1
}
map.toList().sortedByDescending { it.second }.toMap().map{
if(kk > 0) {
kk -= it.value
count++
}
}
return count
}
}
나의 풀이 - 2차
map에 넣어줄때 map.getOrDefault(map[it]?: 0, 0)을 썼었는데 변수선언을 따로 해주고 map에 넣으니까 오류가 나지 않았다. 이유를 모르겠어서 알아봐야한다.
class Solution {
fun solution(k: Int, tangerine: IntArray): Int {
var kk: Int = k
var count = 0
var map = mutableMapOf<Int, Int>()
tangerine.map {
val cnt = map[it]?:0
map[it] = cnt + 1
}
map.toList().sortedByDescending { it.second }.toMap().map{
if(kk > 0) {
kk -= it.value
count++
}
}
return count
}
}