코딩 테스트/test_javaScript

[코딩테스트/javaScript] 문자열 내 마음대로 정렬하기

ijooha 2025. 1. 26. 17:13

function solution(strings, n) {
    return strings.sort((a,b) => a[n]-b[n]);
}

이렇게 썼는데 틀려서 알아보니, 저 (a,b) => a-b 식 정렬은 숫자에만 해당된다구,,,

그래서 다른 방법을 생각해봤다.

 

function solution(strings, n) {
    strings.forEach((word) => {
        word = word[n] + word;
    })
    strings.sort().forEach((word) => {
        word.slice(0,1);
    })
    return strings;
}

같으면 또 적용 안됨. 같은 경우의 수를 생각해야함

 

function solution(strings, n) {
    return strings.sort((a,b) => {
        //다른 경우
        if (a[n] !== b[n]) {
            return a[n].charCodeAt(0) - b[n].charCodeAt(0);
        }
        return a.localeCompare(b)
    })
}

찾아보니 charCode라는 게 있었다. 쓰니까 바로 해결~!

 

 


       charCodeAt 

charCodeAt(0) 은 문자열에서 특정 문자의 유니코드(UTF-16) 값을 반환한다.

'a'.charCodeAt(0); //97
'b'.charCodeAt(0); //98

이런식으로 알파벳을 숫자로 비교할 수 있다.

 

 

       localeCompare 

문자열을 사전 순으로 비교하는 데 사용된다.

반환값으로는 비교 알파벳과 얼마나 떨어져있는지 음수/양수로 나타나고, 같을 경우 0으로 반환된다.

'apple'.localeCompare('banana') //-1
'apple'.localeCompare('apple') //0
'banana'.localeCompare('apple') //1