[프로그래머스/자바스크립트(JavaScript)] 문자열 내 마음대로 정렬하기
글 작성자: 망고좋아
반응형
🎯 문자열 내 마음대로 정렬하기
📁 문제 출처
💡 생각
- 첫 번째 조건인 n번째 인덱스를 기준으로 정렬해주고, n번째 알바펫이 같으면 사전 순으로 정렬해주면 모든 조건을 충족시킨다.
🛠 나의 코드
function solution(strings, n) {
let answer = strings.sort((a, b) => {
if(a[n] > b[n]) {
return 1;
}
if(a[n] < b[n]) {
return -1;
}
if(a[n] === b[n]) {
if(a > b) {
return 1;
}
if(a < b) {
return -1;
}
return 0;
}
})
return answer;
}
리팩토링
function solution(strings, n) {
strings.sort((a, b) => {
let first = a[n];
let second = b[n];
if (first === second) {
return (a > b) - (b > a)
} else {
return (first > second) - (second > first)
}
})
return strings;
}
- strings을 정렬해주고 first와 second가 같다면 사전 순으로 정렬해준다.
(a > b) - (b > a)
이 코드는(a > b)
가 true(b > a)
가 false면1 - 0
으로1
을 반환(a > b)
가 false(a < b)
가 true면0 - 1
으로-1
을 반환- 따라서 true면 1을 false면 -1을 반환해주므로 코드를 간결하게 작성할 수 있다.
- 첫 코드의 10~16번째 코드를 한 줄로 줄일 수 있다.
(first > second) - (second > first)
코드도 위와 동일한 원리로 작동
다른 풀이
function solution(strings, n) {
return strings.sort((s1, s2) => s1[n] === s2[n] ? s1.localeCompare(s2) : s1[n].localeCompare(s2[n]));
}
✔️ 배운 점 및 주의할 점
localeCompare()
'a'.localeCompare('c'); // -2 or -1, a가 c 앞에 오기 때문에 음수를 리턴
'check'.localeCompare('against'); // 2 or 1, 알파벳 순으로 check가 against 뒤에 오기 때문에 양수를 리턴
'a'.localeCompare('a'); // 0, 동일하면 0을 리턴
- 인수로 전달받은 문자열과 정렬 순서로 비교하여 그 결과를 정수 값으로 반환해준다.
📌 참고
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/자바스크립트(JavaScript)] 나누어 떨어지는 숫자 배열 (0) | 2021.09.18 |
---|---|
[프로그래머스/자바스크립트(JavaScript)] 문자열 내 p와 y의 개수 (0) | 2021.09.17 |
[프로그래머스/자바스크립트(JavaScript)] 문자열 내림차순으로 배치하기 (0) | 2021.09.17 |
[프로그래머스/자바스크립트(JavaScript)] 문자열 다루기 기본 (0) | 2021.09.17 |
[프로그래머스/자바스크립트(JavaScript)] 소수 찾기 (feat. 에라토스테네스의 체) (0) | 2021.09.17 |
댓글
이 글 공유하기
다른 글
-
[프로그래머스/자바스크립트(JavaScript)] 나누어 떨어지는 숫자 배열
[프로그래머스/자바스크립트(JavaScript)] 나누어 떨어지는 숫자 배열
2021.09.18 -
[프로그래머스/자바스크립트(JavaScript)] 문자열 내 p와 y의 개수
[프로그래머스/자바스크립트(JavaScript)] 문자열 내 p와 y의 개수
2021.09.17 -
[프로그래머스/자바스크립트(JavaScript)] 문자열 내림차순으로 배치하기
[프로그래머스/자바스크립트(JavaScript)] 문자열 내림차순으로 배치하기
2021.09.17 -
[프로그래머스/자바스크립트(JavaScript)] 문자열 다루기 기본
[프로그래머스/자바스크립트(JavaScript)] 문자열 다루기 기본
2021.09.17