알고리즘 눈덩이 3트 ⛄️⛄️⛄️
이번에도 알고리즘 문제를 푸는데 오름차순으로 숫자를 정리할 일이 생겨
sort라는 녀석을 찾아 적용했건만..
이 녀석이 오름차순으로 정리하긴 했는데 이상한 방식으로 숫자를 정리하는 모습을 볼 수 있었다.
왜 1다음에 16인데..😓
const arr = [1, 5, 6, 16, 8, 9]
console.log(arr.sort()); //[ 1, 16, 5, 6, 8, 9 ]
예를들어 [90, 100, 110]
에 .sort()를 하면 문자열 "90", "100", "110"
으로 생각하고 정렬한다.
이때 "90"과 "100"을 비교할 때 앞자리 9와 1을 비교하고 우리의 똑똑한 자바스크립트는
"아하, 9보다 1이 작으니까 1을 앞에 넣어야지"
라고 생각한다.
이러한 논리에 따라 100이 90보다 앞에 위치해서 [100, 110, 90]
을 반환한다.
.sort()와 함께 a-b(오름차순), b-a(내림차순)를 사용하면 된다.
(정확히 왜 이런 식으로 작동하는지는 모르겠습니다..)
const arr = [1, 5, 6, 16, 8, 9]
console.log(arr.sort((a, b) => {
return a - b;
}));
// [ 1, 5, 6, 8, 9, 16 ]
console.log(arr.sort((a, b) => {
return b - a;
}));
// [ 16, 9, 8, 6, 5, 1 ]