주어진 배열과 비교할 수의 차를 새 배열에 절댓값으로 대입한다
절댓값이 가장 작은 인덱스를 구해서 리턴하면 되는 줄 알았으나
(10, 11, 14, 12) 가 주어질 경우
비교할 n이랑 가장 가까운 수는 12, 14인데 현재 인덱스 상에선 14가 먼저 나오게 되므로 14를 출력하게 됐다
그래서 정렬해서 집어넣고 정렬해서 그 인덱스를 찾으면 된다 라고 생각을 했다
class Solution {
fun solution(array: IntArray, n: Int): Int {
val mut = mutableListOf<Int>()
for(i in array.sorted()) mut.add(Math.abs(n-i))
return array.sorted()[mut.indexOf(mut.sorted().first())]
}
}
속도는 조금 느리게 나왔다 ..
class Solution {
fun solution(array: IntArray, n: Int) =
array.sorted().minWithOrNull(compareBy { Math.abs(it - n) })!!
}
maxWithOrNull()과 minWithOrNull()은 Comparator 객체를 받아서 최댓값 또는 최솟값을 찾는다. 컬렉션이 비어 있다면 null을 반환한다