문자열 내 마음대로 정렬하기 |
문제 설명
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 u, e, a로 strings를 정렬합니다. |
제한 조건
|
더보기
1
2
3
4
5
6
7
8
9
10
11
12
|
function solution(strings, n) {
strings.sort(function (a, b){
let first = a[n];
let end = b[n];
if(first === end){
return (a > b) - (a < b);
}else{
return (first > end) - (first < end);
}
})
return strings;
}
|
cs |
function solution에 매개변수로 받은 strings는 문자열로 이루어진 배열이다. 먼저 배열을 정렬하기 위해서는 sort() 메서드를 이용해야한다. sort() 메서드의 내부 함수의 매개변수가 a와 b일 경우 리턴값으로 return (a > b) - (a < b);를 사용하게 되면 일반적인 sort() 메서드 처럼 작동한다.
앞에 숫자가 크면 1을, 뒤에 숫자가 크면 -1을 반환한다.
비교 함수는 배열 안에 인접한 요소를 비교한다. 인수를 두 개 받고 첫 번째 인수는 인접한 왼쪽 요소, 두 번째 인수는 인접한 오른쪽 요소이다. sort() 메서드 내부 함수의 매개변수가 a와 b 일때 아래와 같은 규칙을 따른다.
①sort(function(a, b){}) < 0 이면 a를 b보다 작은 인덱스로 정렬한다.
②sort(function(a, b){}) == 0 이면 a와 b의 인덱스 순서를 바꾸지 않는다.
③sort(function(a, b){}) > 0 이면 b를 a보다 작은 인덱스로 정렬한다.
주의할 점은 n번째 문자가 같을 경우가 있는데, 이때는 return (a > b) - (a < b);를 이용해 매개변수로 받은 a와 b 문자열 전체를 비교하면 해결이 된다.
'프로그래밍 공부 > 프로그래머스 코딩테스트' 카테고리의 다른 글
[프로그래머스] 자바스크립트 LV1 2016년 (0) | 2020.02.26 |
---|---|
[프로그래머스] 자바스크립트 LV1 K번째수 (0) | 2020.02.25 |
[프로그래머스] 자바스크립트 LV1 정수 제곱근 판별 (0) | 2020.02.25 |
[프로그래머스] 자바스크립트 LV1 가운데 글자 가져오기 (0) | 2019.12.20 |
[프로그래머스] 자바스크립트 LV1 x만큼 간격이 있는 n개의 숫자 (0) | 2019.12.19 |