특이한 정렬, Javascript

cptkuk91·2023년 2월 18일
1

Algorithm

목록 보기
142/161
post-custom-banner

문제

https://school.programmers.co.kr/learn/courses/30/lessons/120880

코드

function solution(numlist, n) {
    let result = []
    result = numlist.sort((a, b) => {
        const [numA, numB] = [Math.abs(a - n), Math.abs(b - n)];
        if(numA === numB){
            return b - a;
        }
        return numA - numB;
    })
    return result;
}

고수의 풀이..

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

풀이

우선 문제를 읽어보면 원소 n을 기준으로 가까운 순서대로 정렬한 배열이면서, 내림차순 정렬입니다. 따라서 const[numA, numB] = [Math.abs(a - n), Math.abs(b - n)]을 통해 각 거리값을 구한 후 만약 numA === numB가 같다면 b - a를 통해 내림차순 정렬로 return합니다. 아니라면 numA - numB를 통해 값을 구합니다.

sort((a, b) => b - a); 내림차순
sort((a, b) => a - b); 오름차순

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)
post-custom-banner

0개의 댓글