예제 1
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
제한조건
- strings는 길이 1 이상, 50이하인 배열입니다.
- strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
- strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
- 모든 strings의 원소의 길이는 n보다 큽니다.
- 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
arr. sort( ) 함수
- arr 배열 내의 기존 요소들이 오름차순으로 정렬되어 다시 "배열"로 반환되게 하는 함수
- 기본적으로 모든 요소를 "문자열"로 간주
- But, 숫자도 2와 92가 있다면 앞자리만 보고 92 < 2 가 됨
- 따라서 compareFunction 을 인수로 받아
arr. sort(compareFunction) 으로 숫자 비교 가능 (콜백함수)
arr. sort(a,b) {
if ( a > b ) {
return 1; // (a - b > 0)
} if ( a === b ) {
return 0; // (a - b = 0)
} if ( a < b) {
return -1; // (a - b < 0)
}
- > 1 return 시 오름차순으로(큰 값이 뒤로)
-> 0 return 시 위치가 변경되지 않음
-> -1 return 시 내림차순으값이 앞으로)
내가 처음에 작성한 코드
결과는 바로바로..!
[ 'bed', 'car', 'sun' ]
엥? 왜.. 왜지?
내 코드의 오류
1. console.log(arr(sort()); => 기껏 돌린 arr를 다시 오름차순으로 sort한 결과이기 때문
ㄴ console.log(arr); 로 하면 원하던 대로 [ 'car', 'bed', 'sun' ] 결과가 나옴
2. 또한 만약 [1] 번째 알파벳이 동일할 경우 사전식으로 하라고 했는데, 이 코드의 경우 반영을 할 수 없음
모범답안
'TIL' 카테고리의 다른 글
2024.01.04 TIL #알고리즘 #반복문 안 return문 (0) | 2024.01.04 |
---|---|
2024.01.03 TIL #명시적 This binding #apply #bind (0) | 2024.01.03 |
2023.12.29 TIL Javascript #object #객체 메소드 #객체비교 #객체병합 (1) | 2023.12.29 |
2023.12.28 TIL Firebase 한 컬렉션에 여러 문서가 있을 때 데이터 불러오기 (2) | 2023.12.28 |
2023.12.27 TIL(2) #Firebase에서 데이터 가져오기 (2) | 2023.12.27 |