function solution(strings, n) {
strings.sort((a, b) => {
if (a[n] < b[n]) return -1;
if (a[n] > b[n]) return 1;
if (a[n] === b[n]) return a < b ? -1 : 1;
return 0;
});
return strings;
}
a[n] > b[n] 경우 a[n]의 인덱스 +1
a[n] < b[n] 경우 a[n]의 인덱스 -1
a[n] === b[n] 경우 a 와 b를 비교해서 정렬
sort 메소드 사용하지않고
버블정렬을 이용해서 풀어봤습니다
function solution(strings, n) {
let tmp = '';
for (let i = 0; i < strings.length - 1; i++){
for (let j = 0; j < strings.length - 1 - i; j++){
if (strings[j][n] > strings[j + 1][n]){
tmp = strings[j];
strings[j] = strings[j + 1];
strings[j + 1] = tmp;
} else if (strings[j][n] === strings[j + 1][n]){
if (strings[j] > strings[j + 1]){
tmp = strings[j];
strings[j] = strings[j + 1];
strings[j + 1] = tmp;
}
}
}
}
return strings;
}
버블정렬 예시로 [7, 5, 3, 9, 4]
배열을 오름차순으로 정렬하는 과정을 작성해봤습니다
j
와 j + 1
인덱스를 비교해가면서 정렬을 합니다
정렬이 한 번 이뤄질 때마다 가장 큰 숫자가 마지막 인덱스로 들어갑니다
arr.sort((a, b) => a - b) // 내림차순
arr.sort((a, b) => b - a) // 오름차순
⚠️ arr.sort(); 할경우 사전순으로 오름차순 정렬
[7, 14, 5, 22, 123].sort();
// expected [123, 14, 22, 5, 7]
숫자의 경우에는 .sort((a, b) => b - a) 로 메서드 사용해야함
// expected [5, 7, 14, 22, 123]