문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
문제를 읽어보고 이거는 딱 ASCII코드를 이용해서 풀어야겠다는 생각이 들었다. 밑에는 ASCII 코드 표이다.
js에는 문자열을 아스키코드 번호로 변환해 주는 메서드가 있다.
바로 charCodeAt
이다. 그 반대로 ASCII코드를 문자열로 구성해주는 함수가 있다. String.fromCharCode
이다. 이 두 메서드를 이용해서 문제를 풀어 봤다.
function solution(s) {
return s.split('').map(el => el.charCodeAt()).sort((a,b) => b-a).map(el => String.fromCharCode(el)).join('')
}
근데 다른 문제풀이법을 보니까 굳이 map과 ascii 변환 메서드가 없어도 됐었다...
sort()
메서드를 쓰면 유니코드 순으로 정렬을 해준다는 것을 깨달았다..
결국 다시 리팩토링을 해서 풀어봤다.
function solution(s) {
return s
.split("") // 문자열 쪼개주고
.sort() // 오름차순 정렬
.reverse() // 배열을 반전 시켜주는 메서드
.join(""); // "" 를 합쳐주는 메서드 (문자열로 바꿔줌)
}
다 아는 메서드였지만 이렇게 할거라고는 생각을 못했다...