그냥 이중루프돌려서 해당값들 전부 넣고 나누기한다음 맵에 값,나눈값 리스트<int>로 넣고,키 정렬해서 k번째꺼 리스트리턴
이진탐색써도될거같은문제
정답
class Solution {
fun kthSmallestPrimeFraction(arr: IntArray, k: Int): IntArray {
val divMap = hashMapOf<Double, List<Int>>()
val sortArrList = arr.sorted()
for (i in sortArrList.indices){
for (j in i until sortArrList.size){
val tempList = listOf(sortArrList[i], sortArrList[j])
val divValue = sortArrList[i].toDouble() / sortArrList[j].toDouble()
divMap[divValue]=tempList
}
}
val keyList = divMap.keys.sorted()
val res=divMap[keyList[k-1]]?:throw IllegalArgumentException()
return res.toIntArray()
}
}
'알고리즘' 카테고리의 다른 글
릿코드 1325. Delete Leaves With a Given Value 코틀린 (0) | 2024.05.17 |
---|---|
릿코드 2373. Largest Local Values in a Matrix 코틀린 (0) | 2024.05.12 |
릿코드 506. Relative Ranks 코틀린 (0) | 2024.05.08 |
릿코드 2816. Double a Number Represented as a Linked List 코틀린 (0) | 2024.05.07 |
릿코드 237. Delete Node in a Linked List 코틀린 (0) | 2024.05.05 |