티스토리 뷰

https://school.programmers.co.kr/learn/courses/30/lessons/12915?language=javascript 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


 

sort()

function solution(strings, n) {
    strings.sort((a, b) => {
        if(a[n] > b[n]) return 1
        if(a[n] < b[n]) return -1
        if(a[n] === b[n]) {
            if(a > b) return 1
            if(a < b) return -1
            if(a === b) return 0
        }
    })
    
    return strings
}
  1. n번째 인덱스 기준으로 비교
    1. n번째 인덱스의 문자가 같을 경우 전체 문자 기준으로 비교

 


다른 사람의 풀이

localeCompare()

a.localCompare(b) 일 때, 인수로 지정된 b가 비교대상인 a와 같으면 0, 앞에 있으면 양수, 뒤에 있으면 음수 반환

function solution(strings, n) {
    strings.sort((a, b) =>
        a[n].localeCompare(b[n]) === 0
            ? a.localeCompare(b) // 0일 경우(문자열이 같을 경우)
            : a[n].localeCompare(b[n]) // 0이 아닐 경우(문자열이 다를 경우)
    )

    return strings
}


// 변수 이용
function solution(strings, n) {
    strings.sort((a, b) => {
        const localeCompare = a[n].localeCompare(b[n])
        
        return localeCompare === 0
            ? a.localeCompare(b)
            : localeCompare
    })

    return strings
}
  1. 삼항연산자 이용하여 n번째 인덱스의 문자열이 같을 경우와 다를 경우 분기
    1. 같을 경우 : 전체 문자열 비교
    2. 다를 경우 : n번째 인덱스 문자열

 

=> 더 간단한 방법

function solution(strings, n) {
    return strings.sort((a, b) =>
        a[n] === b[n]
            ? a.localeCompare(b)
            : a[n].localeCompare(b[n]));
}
  1. 처음부터 localeCompare 사용하지 않고 n번째 문자열만 비교연산자 이용하여 비교
    1. 같을 경우 문자열 전체 비교
    2. 다를 경우 해당 인덱스 문자열만 비교

 


  • localeCompare라는 메서드를 처음 알았음, 그러나 sort만 이용하는 것이 더 빨라보임
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함