문제를 풀 때 차이에 대해서 정렬을 하면 되겠다 라는 생각을 했었다. 근데 자꾸 아래와 같은 코드로 접근하려고 보니 잘 안됐다. 그래서 결국 찾아보게 되었다.
numlist.sort((Math.abs(numlist[i]-n), Math.abs(numlist[i-1]-n)), Math.abs(numlist[i]-n) - Math.abs(numlist[i-1]-n))
아래와 같은 코드를 발견함. 나는 왜 sort 안에 있는 저 a, b가 배열 안의 요소라고 생각을 못했을까? 그냥 오름차, 내림차 정렬을 표현해주는 요소라고만 생각했다. 당연히 요소끼리 비교해서 정렬을 해주는것이었는데말이다. 얼탱무.
function solution(numlist, n) {
return numlist.sort((a, b) => Math.abs(a - n) - Math.abs(b - n) || b - a);
}