문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
str은 길이 1 이상인 문자열입니다.
solution 1
은 대문자 large
와 소문자 small
을 구분해서 문자열을 모두 더해주는 방식으로 코드를 작성했다. solution 2
의 경우 sort()
메서드는 기본적으로 대문자가 소문자봗 우선순위에 있기 때문에 따로 구분하지 않고 바로 해결했다. solution 1
에서 reduce()
메서드를 통해 문자열을 모두 더해 리턴해주었지만 solution 2
의 join()
메서드를 쓰면 훨씬 간결하게 정답을 도출할 수 있다.
// solution 1
function solution(s) {
const large = [...s]
.filter(str => str === str.toUpperCase())
.sort()
.reverse();
const small = [...s]
.filter(str => str === str.toLowerCase())
.sort()
.reverse();
const desc = [...small, ...large];
const answer = desc.reduce((a, b) => a + b, '');
return answer;
}
// solution 2
function solution2(s) {
const answer = [...s].sort().reverse().join('');
return answer;
}
solution('Zbcdefg'); // 'gfedcbZ'
sort() 메서드 간단한 활용
- 자바스크립트의 sort() 메서드는 기본적으로 문자열을 기준으로 오름차순으로 정렬한다.
NAVER D2 - 한글 인코딩의 이해 1편: 한글 인코딩의 역사와 유니코드- 대문자가 소문자보다 우선순위에 있다.
localeCompare()
메소드는 영어알파벳 이외의 문자들도 사전적 순서로 비교할 수 있다.- 숫자 정렬의 경우 compareFunction을 통해 비교할 수 있다.