sort()를 사용하여 배열에 저장되어 있는 값들을 정렬하는 알고리즘 문제를 풀었는데, 다른 테스트 케이스 1개에서 통과를 못하였다. 왜그런고 했더니 mdn을 보니 arr.sort([comparefunction])
에서 compareFunction이 제공되지 않으면 요소를 문자열로 반환하고 유니코드 코드포인트 순서로 문자열을 비교하여 정렬된다고 한다.
예를 들어 9는 80보다 앞에오는 숫자이지만 문자열로 변환됐을 경우 각 요소의 맨 앞자리를 비교하여 80의 8이 9보다 앞이니까 80이 9 앞으로 나온다. 따라서 꼭 compare function을 넣어줘야 한다.
compare function부분은 숫자로 된 배열을 정렬할 경우, sort의 인자로 함수를 받아 오름차순으로 할 지 내림차순으로 할 지 결정해야한다.
오름차순
내림차순
여기서 a와 b는 어떤 값이 들어갈까? 양 옆에 붙어있는 숫자가 들어갈 것 같지만 그럴수도 아닐수도 있다고 한다!(???) 자바스크립트 엔진에 설계된 알고리즘이 계산 절차를 결정해서 그렇다고 한다는데.. 매우 신기하다..
점점 봐야하고 공부할게 많아진다.. 모든 걸 다 정리하지 못한다고 해도 가장 중요한 부분들은 정리를 틈틈히 해놓고 전체적으로 주말에 보는 방향으로 가야겠다. 내일도 화이팅화이팅~~💃