함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
입출력 예
n | return |
---|---|
118372 | 873211 |
숫자를 내림차순으로 정렬해야 하므로 sort() 함수를 사용하겠다고 생각했다.
sort()함수는 배열안의 숫자나 문자를 정렬하는 함수이다. 따라서 '118372'라는 하나의 수를 하나하나 뜯어 배열안에 담아야 한다.
[1, 1, 8, 3, 7, 2] 이렇게 하나씩 분리하는데 사용하는 함수중에 내가 알고 있는 함수는 split()함수이다.
split()함수는 문자열을 분할하는 메서드이므로, 숫자를 문자열로 분할해야 한다.
정리하자면,
1. 숫자를 문자열로 변환한다.
2. split() 함수를 이용해 숫자 한 개씩 분리한다.
3. sort() 함수를 이용해 내림차순으로 정렬한다.
4. split함수로 분리해 놓은 숫자를 하나로 합친다.
5. 문자열로 변환한 배열을 다시 숫자로 되돌려 놓는다.
function solution(n) {
return +String(n)
.split('')
.sort((a, b) => b - a)
.join('')
}
수업 시간에 배운 암묵적 타입 변환을 사용해 숫자로 변환하였다.
숫자로 타입 변환 : +X(앞에 +연산자를 붙이면 암묵적으로 숫자 타입으로 변환된다.)
문자열로 타입 변환 : X + ''(+연산자의 피연산자중에 하나라도 문자열이 있다면 X도 문자열로 타입 변환된다.)
불리언으로 타입 변환 : !!X(앞에 !부정 논리 연산자를 두 번 사용하면 불리언으로 타입 변환된다.)
알아두면 간단하게 타입 변환할 수 있다.
function solution(n) {
// 문자풀이
return parseInt((n+"").split("").sort().reverse().join(""));
}
parseInt 함수를 사용하였다.
function solution(n) {
const newN = n + "";
const newArr = newN
.split("")
.sort()
.reverse()
.join("");
return +newArr;
}