티스토리 뷰

반응형

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로 변환하여 반환한다. 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함
반응형