문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
n
은 1이상 8000000000 이하인 자연수입니다.
입출력 예
기본 solution 코드
function solution(n) {
var answer = 0;
return answer;
}
문제 풀이
function solution(n) {
return +((n+"").split('').sort((a,b) => b-a)).join('');
}
풀이 설명
number type인 n을 string으로 먼저 바꿔서 sort하면 각 요소들이 하나의 요소들로 나뉘기 때문에, join으로 다시 합쳐줬다.
사용 함수
- .join(): 시간의 특정 지점을 나타내는 Date 객체를 플랫폼에 종속되지 않는 형태로 생성
- .join(): '', '', '' 이렇게 반환
- .join(''): ' ' 하나의 string으로 반환
(출처: https://developer.mozilla.org/ko/)
다른 풀이
function solution(n) {
return +(n+"").split('').sort().reverse().join("");
}
다른 풀이 설명
- 사용된 함수
- .reverse(): 호출한 배열을 반전하고 원본 배열을 변형하며 그 참조를 반환
- 풀이
- (n+"").split('') -> [ '1', '1', '8', '3', '7', '2' ]
- (n+"").split('').sort() -> [ '1', '1', '2', '3', '7', '8' ] => .sort parameter인 compareFunction을 생략하면 배열은 각 요소의 문자열 변환에 따라 각 문자의 유니 코드 코드 포인트 값에 따라 정렬. (i.e. "11"이 "2" 보다 먼저, "70"이 "8" 보다 먼저 배치된다는 뜻) 하지만 여기서는 모두 1의 자리 숫자들이라 자동으로 오름차순 배치가 된다.
- (n+"").split('').sort().reverse() -> [ '8', '7', '3', '2', '1', '1' ]
- (n+"").split('').sort().reverse().join("") -> "873211"
- 맨 앞에 +를 붙혀 +string -> int 로 바꿔준다.
- .sort()가 parameter 없이 쓰일 때와 .reverse()를 알았더라면