function solution(strings, n) {
let length = strings.length;
for (let i = 0; i < length - 1; i++) {
for (let j = 0; j < length - 1 - i; j++) {
if (strings[j][n] > strings[j + 1][n]) {
let temp = strings[j];
strings[j] = strings[j + 1];
strings[j + 1] = temp;
} else if (strings[j][n] === strings[j + 1][n]) {
if (strings[j] > strings[j + 1]) {
let temp = strings[j];
strings[j] = strings[j + 1];
strings[j + 1] = temp;
}
}
}
}
return strings;
}
function solution(strings, n) {
return strings.sort((s1, s2) => s1[n] === s2[n] ? s1.localeCompare(s2) : s1[n].localeCompare(s2[n]));
var answer = [];
return strings;
}
str.localeCompare(str2)
는 기준 문자열이 비교 대상 문자열보다 앞에 온다면 음수를 리턴, 반대인 경우 양수 리턴, 같은 경우 0을 리턴하는 점을 이용해 문제를 풀었다. 물론 sort까지 이용. sort는 sort의 콜백함수는 compareFunction(a, b)
이 음수를 리턴하면 a를 작은 값으로, 양수를 리턴하면 b를 작은 값으로, 0을 반환하면 따로 수정하지 않는다.
- 위 코드의 경우 s1[n] 과 s2[n]이 같은 경우는 s1, s2를 비교해야 하므로 s1.localeCompare(s2)을 사용했고
s1[n] 과 s2[n]
이 다른 경우는 s1[n].localeCompare(s2[n])
을 비교한다. 리턴되는 값은 음수, 양수, 0 중 하나이므로 이 값들을 이용해 sort를 사용한다.
- 난 너무 비효율적으로 푼 것 같다. 배우고 갑니다.