🧬알고리즘/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