문제설명:
문자열로 구성된 리스트 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 1;
} else if(a[n] < b[n]) {
return -1;
} else {
if(a > b) {
return 1;
} else {
return -1;
}
}
})
}
strings를 sort메소드를 사용하여 정렬하는데 조건문을 통해 각 요소의 n번째 문자열을 비교하여 a의 문자열이 먼저 나오는 문자열이면 오름차순으로 정렬하고 b의 문자열이 먼저나오는 문자열일 경우 내림차순으로 정렬한다. n번째의 문자열이 같을 경우는 a와 b자체를 비교하여 사전순으로 정렬한다.
String.localeCompare()
참조 문자열이 정렬 순서에서 지정된 문자열의 앞이나 뒤에 오는지 또는 지정된 문자열과 동일한지 여부를 나타내는 숫자를 반환
localeCompare를 사용한 풀이
function solution(strings, n) {
return strings.sort((a, b) => {
if(a[n] === b[n]) {
return a.localeCompare(b);
} else {
return a[n].localeCompare(b[n]);
}
})
}