Lv.0 : 특이한 정렬 [JavaScript]

2024. 8. 15. 20:43Algorithm/프로그래머스

반응형

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


문제 풀이

function solution(numlist, n) {
    var answer = numlist.sort((a, b) => {
        var disA = Math.abs(a - n);
        var disB = Math.abs(b - n);
        if(disA == disB) return b - a; // 거리가 같으면 큰 수가 앞
        return disA - disB; // 거리가 같으면 작은 수가 앞
    })
    return answer;
}

sort를 커스터마이징해 절댓값을 비교해 정렬하도록 한다

더 간단히

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

두 절대값의 차가 0일 때, 즉 false일 때 b-a를 반환하도록 한 줄로 작성할 수 있다

 

 

반응형