[프로그래머스/Lv1/자바스크립트] 문자열 내 마음대로 정렬하기

2023. 5. 25. 11:53

문제

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

 

프로그래머스

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

programmers.co.kr


코드

function solution(strings, n) {
    var sortedS = strings.sort();
    var answer = sortedS.sort(function(a, b) {
        if (a[n] > b[n]) {
            return 1;
        }

        if (a[n] < b[n]) {
            return -1;
        }

        return 0;
    })

    return answer;
}

메모

자바스크립트의 sort() 메소드는 compareFunction을 통해 정렬의 기준을 정할 수 있다.

이 compareFunction을 사용해서 입력받은 배열에서 문자열을 하나씩 꺼내 그 문자열의 n 인덱스 값을 비교하도록 sort() 메소드의 동작을 수정한다.

compareFunction의 반환값이 0보다 크면 a가 b의 앞에 오게 되고, 반대로 0보다 작으면 b가 a의 앞에 오게 된다.

0인 경우 아무런 동작을 하지 않는다.

 

이때 입력받은 strings 배열을 한번만 위 compareFunction을 사용해서 sort하면 문제가 발생한다.

compareFunction의 반환값이 0인 비교 대상들은 원래의 입력의 순서대로 변화가 없게 되는데,

문제에서는 n인덱스의 문자 순서가 동일하다면 그 단어를 사전순으로 정렬하라고 되어있다.

 

그렇기 때문에 입력받은 strings 배열을 사전순으로 우선 정렬한 다음에 compareFunction을 사용해서 정렬한다.

BELATED ARTICLES

more