함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
-n은 1이상 8000000000 이하인 자연수입니다.
n | result |
---|---|
118372 | 873211 |
function solution(n) {
let result = String(n).split('').sort().reverse().join('');
result = Number(result);
return result;
}
function solution(n) {
let result = String(n).split('').map(v=>Number(v));
for(let i=1; i<result.length; i++){
let temp = result[i]; //현재값 저장
let j=i-1; //비교 인덱스 시작점 생성
while(j>=0 && result[j]<temp){ // partical arr의 값이 현재값 보다 작을 때 swap
result[j+1] = result[j];
j--;
}
result[j+1] = temp; // j-- 이후 실행 -> +1
}
result = Number(result.join(''))
return result;
}
더 가독성이 떨어지지만 삽입정렬을 활용해보았습니다.
숫자로 푸는 것이 더 빠르다는 의견이 있었습니다.
문자풀이
숫자 풀이
=> 문자...풀이가 더 빠른 것 같습니다??? 그래도 생각하지 못한 형태의 풀이법이라서 한번 풀어봤습니다.
// 숫자 풀이
function solution2(n){
let nums = [];
do{
nums.push(n%10); // 제일 뒷자리 nums로 푸시
n = Math.floor(n/10);// 제일 뒷자리 소거
}while(n>0) // while이 참일 떄 do구문을 한번 더 실행, 거짓이라면 아래의 구문을 실행
return nums.sort((a,b)=>b-a).join('')*1
}
do...while 문은 테스트 조건이 거짓으로 평가될 때까지 지정된 구문을 실행하는 루프를 만듭니다.
단, 구문이 실행된 뒤에 테스트 조건이 평가됨으로 구문은 무조건 한 번은 실행됩니다.
do구문
while (조건식);
테스트 조건이 참일 때마다 한 번이상 실행되는 구문입니다. 만약 루프 내에서 여러 구문을 반복 실행 시키고 싶으시다면, 다음 명령을 사용합니다.
block 구문을 활용하여 ({ ... }) 이런 식으로 그룹화합니다.
루프가 실행될 때마다 평가되는 식입니다. 만약 조건식이 참으로 평가되었다면, 구문 이 다시 실행됩니다. 만약 조건식이 거짓으로 평가되었다면, 자바스크립트는 do...while. 구문 밑에 있는 구문들을 실행시킵니다.