문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한사항
n
은 1이상 8000000000 이하인 자연수입니다.
🙋♂️나의 풀이
1
2
3
4
5
function solution(n) {
const numbers = n.toString().split("");
numbers.sort((a, b) => b - a);
return +numbers.join("");
}
- 숫자를 배열로 나누기 위해서 string으로 형변환을 하고,
split
을 한다. - 내림차순으로
sort
메서드를 사용한다. - 배열을 하나의 문자열로 합치기 위해
join
메서드를 사용하고, string을 number로 형변환 하기 위해 변수 앞에 단항 더하기 연산자+
를 붙인다.
참고자료 : 단항 더하기 (+)
👀참고한 풀이
1
2
3
4
5
6
7
8
9
function solution(n) {
const numbers = [];
while (n > 0) {
numbers.push(n % 10);
n = Math.floor(n / 10);
}
numbers.sort((a, b) => b - a);
return +numbers.join("");
}
- 숫자를 10으로 나눈 나머지는 맨 마지막 숫자가 된다.
- 그 다음 숫자를 다시 10으로 나눈 다음, 반내림을 하고 계속 10으로 나눈 나머지를 배열에 추가한다.
1
2
3
4
5
6
7
8
n n % 10 Math.floor(n / 10)
12345 5 1234
1234 4 123
123 3 12
12 2 1
1 1 0
[5, 4, 3, 2, 1]