프로그래머스 (JS)/Lv. 0

[Programmers] 120880번 - 특이한 정렬

hodo- 2023. 3. 9. 18:38

Problem

문제 보기

정수 n을 기준으로 n과 가까운 수부터 정렬하려고 합니다. 이때 n으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치합니다. 정수가 담긴 배열 numlist와 정수 n이 주어질 때 numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열을 return하도록 solution 함수를 완성해주세요.


Solution

function solution(numlist, n) {
    return numlist.sort((a, b) =>  Math.abs(n - a) - Math.abs(n - b) || b - a);
}

다중조건 sort()정렬을 이용하여 풀었다.
numlist의 각각의 값과 n과의 차이를 구하고 실수가 나올 수 있으므로 Math.abs로 절대값 반환해준다.
그렇게 나온 값을 오름차순으로 정렬하고 numlist는 내림차순 기준으로 정렬하게 만들었