문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
function solution(strings, n) {
return strings.sort((a, b)=>{
if(a[n] === b[n]){
return a < b ? -1 : 1;
} else if(a[n] < b[n]){
return -1;
} else {
return 1;
}
});
}
첫 번째 매개변수는 작은 색인의 기준/두 번째 매개변수는 큰 색인의 기준
sort
함수 사용
if(a < b) return 1
은 내림차순,if(a < b) return -1
은 오름차순
if(b < a) return 1
은 오름차순,if(b < a) return -1
은 내림차순
a는 작은 기준, b는 큰 기준 return이 1은 해당 조건대로 정렬, -1은 해당 조건의 반대로 정렬, 0 이면 변경 하지 않고 넘어간다.
function solution(strings, n) {
//사전순으로 앞선 문자열 먼저 정렬
strings.sort();
//charCodeAt으로 아스키코드로 변환 후 해당 문자 기준으로 정렬
strings.sort((a,b) => a.charCodeAt(n) - b.charCodeAt(n));
return strings;
}
사전순으로 정렬
["bbc", "abc"] 배열과 1이 주어질때 둘다 동일한 b로 정렬하게 된다.--> 순서대로bbc
,abc
가 반환
abc
가bbc
보다 사전순으로 앞에 있기 때문에abc
,bbc
순으로 리턴되어야만 테스트케이스를 통과한다.
따라서 사전순으로 정렬 해준후, 아스키 코드로 변환된 n번째 값을 비교하여 오름차순으로 정렬해주면 됩니다.