문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
function solution(strings, n) {
strings.sort(function(a,b) {
let first = a[n];
let second = b[n];
if (first === second) {
if (a < b) {
return -1;
}
}else {
if (first < second) {
return -1;
}else {
return 1;
}
}
});
return strings
}
sort() 메서드를 사용해서 해결하였습니다.
정렬 순서 정의하는 함수 = compareFunction(a, b)
function solution(strings, n) {
strings.sort(function(a,b){
let first = a[n];
let second = b[n];
if(first === second){
return (a > b) - (a < b);
}else{
return (first > second) - (first < second);
}
})
return strings;
}
(a > b) - (a < b) 이런식으로 작성하면 값이 정수로 나오게 됩니다.
왜냐하면!
자바스크립트는 Boolean에 산술 연산자를 대입하면 true는 1, false는 0 으로 인식됩니다.
그래서 return 자체를 비교하여 return 값이 1 혹은 -1이 나오게 해줍니다.
def solution(strings, n):
new_strings = sorted(sorted(strings), key = lambda x : x[n])
return new_strings