문제를 읽으면서 바로 식을 짜서 풀었다. 바로 정답 처리되었지만 점수가 1점이 나왔다. 😅
function solution(n) {
return parseInt(n.toString().split('').sort((a, b) => b - a).join(''));
}
다른 사람 풀이를 보고 알게 된 점
do-while과 1을 곱해서 형변환하는 코드를 참고하여 다시 풀었다.
function solution(n) {
let num = [];
do {
num.push(n % 10);
n = Math.floor(n / 10);
} while (n > 0);
return num.sort((a, b) => b - a).join('') * 1
}
do-while을 안 써도 되지 않을까 해서 do-while을 주석 처리하고 return 문의 num.sort를 [...n].sort로 실행해봤는데 n is not iterable이라는 에러가 떴다.
숫자는 iterable하지 않고, 문자열은 iterable하기 때문
즉, do-while을 쓴 이유가 숫자를 한 자리씩 떼서 배열에 담기 위해서였다.
이후 num 배열을 sort로 내림차순 정렬하고, join을 써서 문자열로 붙인 다음, (parseInt 메서드 없이) 숫자 1을 곱해서 숫자형으로 만들어줬다.
** 여기서 처음 풀 때 헷갈렸던 점이 split()은 문자열에만 쓸 수 있지만 join은 문자열이 아닌 '배열'에 쓰기 때문에 앞의 배열이 꼭 문자열 (배열)이 아니어도 된다.