문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
26405
이전에 배웠던 localeCompare를 가져왔다. 대문자는 소문자 보다 뒤에 나와야 함으로 따로 만들었다.
function solution(s) {
// 각 대문자와 소문자의 문자열을 추출하고 sort를 이용하여 정렬하되 localCompare로 양수로 나오게 하여 내림차순으로 정렬한뒤 join으로 하나의 문자열로 만들었다.
let upper = s.match(/[A-Z]?/g).sort((s1,s2) => s2.localeCompare(s1)).join('');
let lower = s.match(/[a-z]?/g).sort((s1,s2) => s2.localeCompare(s1)).join('');
//만들어진 2개의 문자를 소문자가 먼저오게 하여 합치고 리턴하였다.
return lower + upper
}
//먼저 받아온 문자를 ""기준으로 split하여 배열로 만들고 이를 sort를 이용하여 정렬한다. 정렬시킨뒤 reverse하여 내림차순으로 바꾸는데 이때 sort를 기본값으로 받고 reverse를 하면 대문자는 그대로 뒤에 간다.. 와우??
//다음 동작은 위와 같다.
function solution(s) {
return s.split("").sort().reverse().join("");
}