https://programmers.co.kr/learn/courses/30/lessons/12915
문자열로 구성된 리스트 strings와 정수 n이 주어졌을 때,
각 문자열의 인덱스 n번째 글자를 기준으로 strings를 오름차순 정렬.
- 조건 : n번째 인덱스의 문자가 같은 문자열이 여럿 일 경우,
사전순으로 앞선 문자열이 앞쪽에 위치.
1. 우선 조건 부분을 해결하기 위해 sort( ) 함수를 사용하여 문자열들을 사전순으로 정렬해주었다.
2. 사전순으로 정렬된 strings를 n번째 문자의 아스키코드끼리 비교하여 또 한 번 정렬해주었다.
function solution(strings, n) {
return strings.sort().sort((a, b) => {
return a[n].charCodeAt() - b[n].charCodeAt();
});
}
function solution(strings, n) {
// strings 배열
// n 번째 문자열 비교
return strings.sort((s1, s2) => s1[n] === s2[n] ? s1.localeCompare(s2) : s1[n].localeCompare(s2[n]));
}
localeCompare( ) 이라는 함수를 처음 봐서 가지고 왔다.
[ localeCompare( ) ]
- 용도
: 정렬했을 때 비교 대상 문자열이 기준 문자열보다 앞에 와야 하는지, 뒤에 와야 하는지, 같은 순서에 배치 되어야 하는지를 나타내는 숫자 반환.
- 주의 : 리턴되는 값은 브라우저마다 다를 수 있다.
- 문법
기준 문자열.localeCompare(비교 대상 문자열)'bed'.localeCompare('sun') // -2 or -1 (아니면 다른 음수값) 'sun'.localeCompare('bed') // 2 or 1 (아니면 다른 양수값) 'bed'.localeCompare('bed') // 0
- 예시 설명 (1)
'bed'.localeCompare('sun') // -1
기준 문자열('bed')과 비교 대상 문자열('sun')을 비교했을 때 음수가 나온다면,
비교 대상 문자열 'sun'의 순서가 더 뒤쪽에 온다.
- 예시 설명 (2)
'sun'.localeCompare('bed') // 1
기준 문자열('sun')과 비교 대상 문자열('bed')을 비교했을 때 양수가 나온다면,
비교 대상 문자열 'bed'의 순서가 더 앞쪽에 온다.
참조 사이트 바로가기
[ sort( ) 의 return값 ]
- return값이 음수 : s1이 앞에 오도록, s2가 뒤에 오도록 자리 바꿈
- return값이 양수 : s2가 앞에 오도록, s1이 뒤에 오도록 자리 바꿈
- return값이 0 : 자리 변경 없음