[JS] localeCompare 메소드

조병근·2023년 3월 25일
0

프로그래머스 알고리즘을 풀던 중 새로운 메소드를 알게 되었다.

프로그래머스 level1 문자열 내 마음대로 정렬하기

처음 풀이

function solution(strings, n) {
    var answer = [];
    let arr=[];
    strings.map((v)=>{
        v=v.substring(n,n+1,1)+v.substring(0,n) + v.substring(n+1);
        arr.push(v);
    });
    arr.sort();
    arr.map((v)=>{
        v=v.substring(1,n+1)+v.substring(0,1,1) + v.substring(n+1);
        answer.push(v);
    })
    
    return answer;
}

저자는 이 문제를 sort를 이용해서 해결하려고 했다.
너무 쉽다 생각해서 바로 문제를 풀기 시작하니 map을 두번이나 써서 풀었다.
정신을 차리고 다시 보니 모든 항목을 돌기 때문에 굉장히 비효율적이라 생각하고 다른 풀이를 보게 되었다.

localeCompare?

localeCompare 메서드는 String 객체의 내장 메서드로 정렬했을 때 앞에 오는지 뒤에 오는지 그 여부를 반환하는 메서드이다. 즉, 문자열 자체를 비교해서 사전 순으로 비교해준 다는 것이다. 이 메서드를 활용해서 정렬 순서에서 매번 헷갈리는 -1, 1을 처리할 수 있었다.

본 풀이

function solution(strings, n) {
    return strings.sort((s1, s2) => s1[n] === s2[n] ? s1.localeCompare(s2) : s1[n].localeCompare(s2[n]));
}

localeCompare를 하면 문자열의 글자를 정렬해서 저렇게 바꿔줄 필요가 없게 된다.

profile
노력하면 못할 일이 없다

0개의 댓글