반응형
문자열 내림차순으로 배치하기
문제 요약
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수,
solution을 완성해주세요.s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
문제 풀이
1번째
const solution = (s) => {
if (s.length === 1) return s;
return s
.split("")
.sort((a, b) => {
if (a === a.toUpperCase() && b != b.toUpperCase()) return 1;
if (b === b.toUpperCase() && a != a.toUpperCase()) return -1;
return a.localeCompare(b)
})
.join("");
};
최근에 알게 된 localeCompare를 사용하고 싶어 접근한 방법 하지만 localeCompare는 대소문자 구분을 하지 않고 한 글자 단위 비교에는 적합하지 않아보인다.
2번째
const solution = (s) => {
if (s.length === 1) return s;
return s
.split("")
.sort((a, b) => (b > a ? 1 : -1))
.join("");
};
문자의 대소 비교를 하면 아스키코드 값을 비교하기 때문에 자동적으로 대소문자 비교와 정렬이 가능하다.
3번째
const solution = (s) => {
if (s.length === 1) return s;
return s
.split("")
.sort()
.reverse()
.join("");
};
sort() 메소드가 기본적으로 오름차순을 제공하기때문에 sort 결과값에 reverse 를 하면 된다.
반응형
'개발관련 > 매일 코딩 테스트 챌린지' 카테고리의 다른 글
[프로그래머스] 수박수박수박수박수박수? (javascript) (0) | 2020.08.24 |
---|---|
[코딜리티] GenomicRangeQuery (javascript) (0) | 2020.08.24 |
[JAVASCRIPT] 코딜리티 CountDiv (0) | 2020.08.23 |
[javascript][프로그래머스]문자열 다루기 기본 (0) | 2020.08.23 |
[자바스크립트] 코딜리티 Perm Check 풀이 (0) | 2020.08.20 |