확인 문제
- 문제 설명
문자열로 구성된 리스트 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가 먼저 온다. (먼저 온다는 의미는 낮은 인덱스 번호로 들어간다는 것이다.)
Array.prototype.sort() - JavaScript | MDN
sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.
developer.mozilla.org
② 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é']
==> 예제와 같이 문자열 전체를 비교한다.
String.prototype.localeCompare() - JavaScript | MDN
The localeCompare() method returns a number indicating whether a reference string comes before, or after, or is the same as the given string in sort order. In implementations with Intl.Collator API support, this method simply calls Intl.Collator.
developer.mozilla.org
위에 두개의 메소드를 이용하여 코드를 작성하면...
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 |