명예의 전당(1)
k번째 까지 배열에 넣어준뒤 정렬해서 첫번째 수를 answer에 넣어줌
k번째 이후부터는 명예의 전당(arr)에 가장 작은 수보다 큰수라면 값을 바꿔주고 다시 정렬해 첫번째 값을 출력하는 식으로 풀이
나의 풀이
class Solution {
fun solution(k: Int, score: IntArray): IntArray {
var answer: IntArray = intArrayOf()
var arr : IntArray = intArrayOf()
for( i in 0 until score.size){
if(k < i+1 && score[i] > arr[0]){
arr[0] = score[i]
} else if (k >= i+1) {
arr += score[i]
}
arr.sort()
answer += arr.first()
}
return answer
}
}
다른사람 풀이
class Solution {
fun solution(k: Int, score: IntArray): IntArray = score.mapIndexed { index, i ->
score.copyOfRange(0, index + 1).sortedDescending().run { getOrNull(k - 1) ?: minOf { it } }
}.toIntArray()
}