- 숫자 배열(numlist)의 원소들과 n의 숫자 차이(거리)
- 숫자 차이가 적은 숫자부터 오름차순 정렬
- numlist 는 중복된 원소를 갖지 않습니다.
못 풀었는데요 ... 🥲
풀지 못하고 개판 5분전 된 코드를 일단 공개해보겠다 ...
못 푼 코드라 볼 필요는 없다 ^^!
function solution(numlist, n) {
// numlist 의 원소가 n 과 가까운 것부터 정렬되어야 한다
// numlist - n = 값이 작은 숫자가 먼저 정렬
let newArr = [];
for (let i = 0; i < numlist.length; i++) {
newArr.push(Math.abs(n - numlist[i]))
console.log(newArr)
const el = Math.abs(n - numlist[i]);
newArr.sort((prev, next) => {
if(prev > next) return 1;
if(prev === next) return 0;
if(prev < next) return -1;
})
console.log(newArr)
// const prev = Math.abs(n - numlist[i]);
// const next = Math.abs(n - numlist[i+1]);
// // 절대값 기준으로 원소 오름차순
// numlist.sort((prev, next) => {
// if(prev > next) return 1;
// if(prev === next) return 0;
// if(prev < next) return -1;
// })
}
}
Math.abs 로 절대값 만드는거랑, sort 사용해야 될 것 같은 건 감지를 했는데 거기서 어떻게 응용하여 해결해야할지는 모르겠어서 포기 ㅜ_ㅜ
sort()에 대한 이해력이 부족하다고 느낌 ... !
나는야 for문 밖에 몰르는 밥오 .... 🥳
function solution(numlist, n) {
return numlist.sort((a, b) => Math.abs(a-n) - Math.abs(b-n) || b-a)
}
구글링하여 이 간결하고도 클린한 코드로 일단 제출을 했다. (무려 +10점!)
sort
메서드를 사용하여 각 요소마다 n을 빼주고,
sort 의 compareFunction
을 활용하여 오름차순으로 반환해주도록 한다.
그러나 뺀 값이 0
이 되면(즉, falsy 한 값이 되면) 내림차순으로 계산되도록 한다.
진짜 군더더기없이 정확한 코드...!
sort()
를 더 공부해야겠다 👩🏻💻