728x90
https://school.programmers.co.kr/learn/courses/30/lessons/138476
문제 풀이
1. 입력으로 주어지는 귤의 크기를 담은 배열에서 각각의 크기가 몇 개씩인 지를 저장하는 배열을 선언한다.
이때 귤의 크기 원소가 1부터 10,000,000 까지 제공되기 때문에 배열을 10,000,001 크기로 선언한다.
2. 입력으로 주어지는 귤의 크기 배열의 값을 Index 로 하여 1번에서 선언한 배열에 저장한다. 이때 개수를 저장하기 위해서
저장된 배열의 값에 1을 더해서 저장해 준다.
3. 저장을 완료한 배열을 내림 차순으로 정리한다. Kotlin 에서 제공하는 sortDescending 함수를 이용한다.
4. 3번에서 정렬한 배열을 하나씩 더해서 귤을 고르는 개수 K 만큼 될 때 까지 반복하여 결과를 구한다.
코드
class Solution {
fun solution(k: Int, tangerine: IntArray): Int {
var answer: Int = 0
// 귤 크기 종류를 Index 로 하여 각 종류의 개수를 저장하는 배열을 선언한다.
// 귤의 종류가 1부터 시작하기 때문에 배열 크기는 최대 크기에 1을 더한다.
val arr = IntArray(10000001) {
0
}
tangerine.forEach { t ->
arr[t] += 1
}
// 배열을 내림 차순으로 정렬한다.
arr.sortDescending()
var count = k
var index = 0
// 고를 개수 k 값이 될 때 까지 배열의 값을 뺀다.
// 뺀 회수가 최종 결과가 된다.
while (count > 0) {
count -= arr[index++]
answer++
}
return answer
}
}
728x90
'알고리즘(w.KOTLIN) > 정렬' 카테고리의 다른 글
[BOJ][25305] 커트라인 (0) | 2022.11.10 |
---|---|
[BOJ][25305] 커트라인 (0) | 2022.11.07 |