확인 문제
- 문제 설명
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
- 제한 조건
- strings는 길이 1 이상, 50이하인 배열입니다.
- strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
- strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
- 모든 strings의 원소의 길이는 n보다 큽니다.
- 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
["sun", "bed", "car"] 1 ["car", "bed", "sun"] ["abce", "abcd", "cdx"] 2 ["abcd", "abce", "cdx"] - 입출력 예 1"sun", "bed", "car"의 1번째 인덱스 값은 각각 "u", "e", "a" 입니다. 이를 기준으로 strings를 정렬하면 ["car", "bed", "sun"] 입니다.
- 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
풀이
① sort()
==> sort 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환, 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따른다.
arr.sort([compareFunction])
==> 이렇게 작성시 compareFunction의 규칙에 의해 정렬해서 반환한다. 비교시 compareFunction(a,b)이 0보다 작을 경우 a>b이므로 a가 먼저 온다. 0일 경우 다른 요소를 비교해서 정렬한다. 0보다 클 경우 a<b이므로 b가 먼저 온다. (먼저 온다는 의미는 낮은 인덱스 번호로 들어간다는 것이다.)
② localeCompare()
==> localeCompare 메서드는 참조 문자열이 정렬 순서에서 주어진 문자열과 앞, 뒤 또는 같은지 나타내는 숫자를 반환
const items = ["réservé", "Premier", "Cliché", "communiqué", "café", "Adieu"];
items.sort((a, b) => a.localeCompare(b, "fr", { ignorePunctuation: true }));
// ['Adieu', 'café', 'Cliché', 'communiqué', 'Premier', 'réservé']
==> 예제와 같이 문자열 전체를 비교한다.
위에 두개의 메소드를 이용하여 코드를 작성하면...
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])
}
})
}
==> n번째의 문자를 비교하고 정렬한다. n번째가 같다면 문자열 전체를 비교해서 순서를 다시 맞춰주는 코드
'JavaScript Dev. > Javascript' 카테고리의 다른 글
10. 데이터 타입 (0) | 2023.04.21 |
---|---|
2023.04.15 - Number vs. parseInt (1) | 2023.04.15 |
9. Map과 Set (0) | 2023.04.10 |
2023.04.05 - <1주차 과제> (0) | 2023.04.09 |
8. ES6 문법 & 일급 객체로서의 함수 (0) | 2023.04.09 |