[프로그래머스 | JavaScript] 문자열 내 마음대로 정렬하기

728x90
반응형

(1) 내 코드

function solution(strings, n) {
    let arr=[];
    let answer = [];
   
    //n번째 인덱스를 단어 앞에 붙여주기
    strings.forEach(x =>{
        x = x.charAt(n) + x;
        arr.push(x);
    });
    console.log(arr);
   
    //앞글자에 따라 다시 정렬하기
    arr.sort();
   
    //앞글자 (n번째인덱스로 붙인 알파벳 1개) 제거
    for( let i = 0 ; i< arr.length; i++){
        arr[i] = arr[i].replace(arr[i][0],"");
        answer.push(arr[i]);
    }
   
    return answer;
}
 

1) n번째 인덱스를 단어 앞에 붙여주기

2) 앞글자에 따라 다시 정렬하기

3) 앞글자 (n번째인덱스로 붙인 알파벳 1개) 제거

 

 

(2) 다른 사람 풀이

function solution(strings, n) {
    // strings 배열
    // n 번째 문자열 비교
    return strings.sort((s1, s2) => s1[n] === s2[n] ? s1.localeCompare(s2) : s1[n].localeCompare(s2[n]));
}

1)  내부 인덱스를 가지고 비교

2)  내부 character 가 같으면 전체 string 을 비교

3)  내부 character 가 다르면 내부 character 을 비교

 

 

 

 

localeCompare() 메서드는

참조 문자열이 정렬 순으로 지정된 문자열 앞 혹은 뒤에 오는지

또는 동일한 문자열인지 나타내는 수치를 반환

let items = ["réservé", "Premier", "Cliché", "communiqué", "café", "Adieu"];
items.sort((a, b) => a.localeCompare(b, "fr", { ignorePunctuation: true }));
// ['Adieu', 'café', 'Cliché', 'communiqué', 'Premier', 'réservé']
 

String.prototype.localeCompare() - JavaScript | MDN

localeCompare() 메서드는 참조 문자열이 정렬 순으로 지정된 문자열 앞 혹은 뒤에 오는지 또는 동일한 문자열인지 나타내는 수치를 반환합니다.

developer.mozilla.org

 

반응형