🧬알고리즘/Programmers

[JavaScript] 문자열 내 마음대로 정렬하기

뉴발자 2024. 8. 13. 20:20
728x90

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

문제

문자열로 구성된 배열 strings와 정수 n이 매개변수로 주어진다.

 

각 문자열의 n번째 인덱스 글자를 기준으로 오름차순 정렬한 배열을 리턴하는 함수를 작성하라.

 

인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치한다.

 

모든 strings의 원소는 소문자 알파벳으로 이루어져 있다.

 

 

예시

strings n return
["sun", "bed", "car"] 1 ["car", "bed", "sun"]
["abce", "abcd", "cdx"] 2 ["abcd", "abce", "cdx"]

 

1번 문자열 ["sun", "bed", "car"]에서 n번째 인덱스의 문자는 ["u", "e", "a"]이기 때문에 ["car", "bed", "sun"]가 리턴된다.

 

2번 문자열에서는 "abce"와 "abcd"의 n번째 문자는 같지만 사전순으로 정렬해서 ["abcd", "abce", "cdx"]가 리턴된다.

 

 

나의 풀이

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

 

 

풀이 방법

정렬해야하기때문에 sort() 함수를 쓰면 될거라고 생각했다.

 

숫자 정렬 시 'a-b' 조건을 사용하는 것처럼 소문자의 알파벳으로만 이루어진 문자열이라 ascii 코드로 변환해서 계산했다.

 

두 번째 문자열에서 사전순으로 정렬하는 것 때문에 고민이 됐다.

 

처음에는 n+1번째 인덱스의 문자를 비교해서 재정렬할까 고민했는데 이건 답이 아닌 것 같았다.

 

생각을 전환해서 사전순으로 먼저 정렬한 후 인덱스의 문자로 한번 더 정렬해서 문제를 해결했다.

 

 

 

 

 

 

 

 

 

 

728x90