문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때,
각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다.
예를 들어 strings가["sun", "bed", "car"]이고 n이 1이면
각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
function solution(strings, n) {
let answer = [];
let alphabet;
for (let i = 0; i < strings.length; i++) {
alphabet = strings[i][n] + strings[i]; // 1. 인덱스 값을 받아서 스트링의 인덱스 문자를 받는다.
strings[i] = alphabet; // 2. 앞 글자에 받은 인덱스 문자를 붙인다.
}
strings.sort(); // 3. 정렬한다.
for (let i = 0; i < strings.length; i++) {
strings[i] = strings[i].substr(1); // 4. 맨 앞 문자를 자른다.
answer.push(strings[i]);
}
return answer;
}
나는 원하는 문자를 따로 뽑은 뒤에 각 배열의 단어 앞에 문자를 붙인 후, 정렬한 뒤 다시 문자를 떼는 과정을 거쳐 해결했다.
function solution(strings, n) {
var answer = [];
strings.sort((a,b)=>{
if(a[n]>b[n]){ // a가 b보다 크면 ture, 반대 false
return 1 // sort()에서 a가 b보다 앞 쪽에 위치
} else if(b[n]>a[n]){
return -1 // b가 a보다 앞으로
} else if(a[n]==b[n]){ // a와 b가 같은 경우에는
if(a>b){ // 전체를 비교해서 정렬
return 1
} else if(a<b){
return -1
} else{
return 0 // a와 b의 순서를 바꾸지 않음
}
}
})
return strings
}
다른 사람의 풀이와 설명을 들으면서 sort()에 대해서 하나 더 알아갈 수 있었다 !