
function solution(s) {
const lower = [];
const upper = [];
for (let i in s) {
s[i] === s.toLowerCase()[i] ? lower.push(s[i]) : upper.push(s[i])
}
return lower.sort().reverse().join('') + upper.sort().reverse().join('')
}
sort().reverse()를 하여 내림차순으로 정렬하고 join('')을 사용하여 문자열로 다시 반환한다.이 순서로 풀면서 '다른 쉬운 방법이 있을 것 같은데...' 라는 생각을 계속 했다. 제출 후 다른 사람의 풀이를 눌러보니... 있었다...^^....
function solution(s) {
return s
.split("")
.sort()
.reverse()
.join("");
}
나는... 소문자 따로 대문자 따로 했는데... 이렇게 간결하게 나올 수 있는 문제였다니.... 이 풀이를 보기 전에는 sort()를 사용하면 소문자와 대문자 관계 없이 a와 A가 같을 거라고 생각했다. 그래서 MDN을 찾아보니
기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.
라고 하더라... ^^.... 소문자의 유니코드와 대문자의 유니코드는 다르니까... 당연한 소리인데... 이걸 놓치고 있었다니... 바보같다... 🥲 그래도 오늘 배운 것이 있으니 괜찮다고 위로해야겠다....
sort() 메서드는 소문자와 대문자를 구분하여 정렬한다. 유니코드가 다르기 때문이다!!!!