Coding test Practice35

HyeRyun CHOI·2022년 4월 22일
0

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

문제설명:
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.

제한조건

  • strings는 길이 1 이상, 50이하인 배열입니다.
  • strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
  • strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
  • 모든 strings의 원소의 길이는 n보다 큽니다.
  • 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
function solution(strings, n) {
    return strings.sort((a, b) => {
        if(a[n] > b[n]) {
            return 1;
        } else if(a[n] < b[n]) {
            return -1;
        } else {
            if(a > b) {
                return 1;
            } else {
                return -1;
            }
        }
    })
}

strings를 sort메소드를 사용하여 정렬하는데 조건문을 통해 각 요소의 n번째 문자열을 비교하여 a의 문자열이 먼저 나오는 문자열이면 오름차순으로 정렬하고 b의 문자열이 먼저나오는 문자열일 경우 내림차순으로 정렬한다. n번째의 문자열이 같을 경우는 a와 b자체를 비교하여 사전순으로 정렬한다.

String.localeCompare()
참조 문자열이 정렬 순서에서 지정된 문자열의 앞이나 뒤에 오는지 또는 지정된 문자열과 동일한지 여부를 나타내는 숫자를 반환

  • c는 a앞으로 올 수 없으므로 -1 반환
  • a는 c앞으로 올 수 있으므로 1 반환
  • a는 a와 같으므로 0 반환

localeCompare를 사용한 풀이

function solution(strings, n) {
    return strings.sort((a, b) => {
        if(a[n] === b[n]) {
            return a.localeCompare(b);
        } else {
            return a[n].localeCompare(b[n]);
        }
    })
}
profile
(˘・ᴗ・˘)

0개의 댓글

Powered by GraphCDN, the GraphQL CDN