https://school.programmers.co.kr/learn/courses/30/lessons/120880
정수
n
을 기준으로n
과 가까운 수부터 정렬하려고 합니다. 이때n
으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치합니다. 정수가 담긴 배열numlist
와 정수n
이 주어질 때numlist
의 원소를n
으로부터 가까운 순서대로 정렬한 배열을 return하도록 solution 함수를 완성해주세요.
function solution(numlist, n) {
return numlist.sort((a,b)=>{
const [aNum, bNum] = [Math.abs(a-n),Math.abs(b-n)]
//거기가 같다면 큰 수를 위로 나열
if(aNum===bNum) return b-a
//다르다면 오름차순
return aNum-bNum
}
)
}
console.log(solution([1, 2, 3, 4, 5, 6],4));
console.log(solution([10000,20,36,47,40,6,10,7000],30));
function solution(numlist, n) {
// a와 b가 거리가 같으면 Math.abs(a - n) - Math.abs(b - n)가 0이 되니
// 단축평가 논리합(||)을 사용해 0이 되었을때 b-a가 실행되도록 설정한다.
return numlist.sort((a, b) => Math.abs(a - n) - Math.abs(b - n) || b - a);
}
console.log(solution([1, 2, 3, 4, 5, 6],4));
console.log(solution([10000,20,36,47,40,6,10,7000],30));
sort((a,b)=> a-b)
-> 오름차순(작은 것부터 나열)sort((a,b)=> b-a)
-> 내림차순(큰 것부터 나열)