문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수,
solution을 완성해주세요.s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
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는 대소문자 구분을 하지 않고 한 글자 단위 비교에는 적합하지 않아보인다.
const solution = (s) => {
if (s.length === 1) return s;
return s
.split("")
.sort((a, b) => (b > a ? 1 : -1))
.join("");
};
문자의 대소 비교를 하면 아스키코드 값을 비교하기 때문에 자동적으로 대소문자 비교와 정렬이 가능하다.
const solution = (s) => {
if (s.length === 1) return s;
return s
.split("")
.sort()
.reverse()
.join("");
};
sort() 메소드가 기본적으로 오름차순을 제공하기때문에 sort 결과값에 reverse 를 하면 된다.