티스토리 뷰
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/120880
문제설명
정수 n을 기준으로 n과 가까운 수부터 정렬하려고 합니다. 이때 n으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치합니다. 정수가 담긴 배열 numlist와 정수 n이 주어질 때 numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 10,000
- 1 ≤ numlist의 원소 ≤ 10,000
- 1 ≤ numlist의 길이 ≤ 100
- numlist는 중복된 원소를 갖지 않습니다.
풀이
class Solution {
fun solution(numlist: IntArray, n: Int): IntArray {
val arr = ArrayList<Int>()
for (i in numlist) {
arr.add(Integer.valueOf(i))
}
arr.sortWith { a, b ->
val absA = abs(a - n)
val absB = abs(b- n)
if (absA == absB) {
if (a > b) {
-1
} else {
1
}
} else {
absA - absB
}
}
val answer = IntArray(numlist.size)
for (i in arr.indices) {
answer[i] = arr[i]
}
return answer
}
}
sortWith: 두개의 객체가 동일할때, 내가 만든 조건으로 비교할 수 있다.
상기 코드에서는 두 요소와 n과의 거리를 계산하고 거리가 같은 경우 값이 큰 순서대로 정렬한다.
입력된 배열의 요소들을 n과 가까운 순서대로 정렬하고, ArrayList를 IntArray로 변환하여 반환한다.
반응형
'Algorithm > programmers_lv0' 카테고리의 다른 글
프로그래머스 lv0 유한소수 판별하기 (Kotlin) (0) | 2023.05.03 |
---|---|
프로그래머스 lv0 등수 매기기 (Kotlin) (0) | 2023.05.02 |
프로그래머스 lv0 저주의 숫자3 (Kotlin) (0) | 2023.05.01 |
프로그래머스 lv0 안전지대 (Kotlin) (0) | 2023.04.28 |
프로그래머스 lv0 옹알이(1) (Kotlin) (0) | 2023.04.28 |
댓글