프로그래머 – Js – 비정상적인 정렬

문제 설명

존재들 N기반으로 N에 가장 가까운 숫자로 정렬하려고 합니다. 이때 N서로의 거리가 같으면 큰 숫자를 먼저 입력합니다. 정수 배열 번호 목록및 정수 N주어지면 번호 목록의 요소 Nsolve 함수를 완성하여 내림차순으로 정렬된 배열을 반환합니다.

제한

  • 1 ≤ N ≤ 10,000
  • 1 ≤ numlist ≤ 10,000의 요소
  • 1 ≤ 숫자 목록 길이 ≤ 100
  • numlist에는 중복 요소가 없습니다.

I/O 예시


I/O 예제 #1

  • 4에 가장 가까운 순서대로 (4, 5, 3, 6, 2, 1)을 반환합니다.
  • 3과 5는 같은 간격으로 있으므로 더 큰 5가 먼저 와야 합니다.
  • 2와 6은 같은 간격으로 있으므로 더 큰 6이 먼저 와야 합니다.

I/O 예제 #2

  • 30에 가장 가까운 순서대로 (36, 40, 20, 47, 10, 6, 7000, 10000)을 반환합니다.
  • 20과 40은 같은 거리이므로 더 큰 40이 먼저 와야 합니다.

내 솔루션

function solution(numlist, n) {
    const answer = numlist.sort((a, b) => {
    	// 기준이 되는 수 n과의 차이를 위해서 절댓값 구함
        const (c, d) = (Math.abs(a-n), Math.abs(b-n))
        // 차이가 같을경우 더 큰수가 먼저 와야하므로(내림차순) b-a
        if(c===d) return b-a;
        // 차이를 기준으로 오름차순이기 때문에 c-d
        return c-d
    });
    
    return answer;
}