Algorithm | 정수 내림차순으로 배치하기
문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
-n은 1이상 8000000000 이하인 자연수입니다.
예시
n | result |
---|---|
118372 | 873211 |
📍나의 풀이 1
function solution(n) {
let result = String(n).split('').sort().reverse().join('');
result = Number(result);
return result;
}
📍 나의 풀이 2
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 문은 테스트 조건이 거짓으로 평가될 때까지 지정된 구문을 실행하는 루프를 만듭니다.
단, 구문이 실행된 뒤에 테스트 조건이 평가됨으로 구문은 무조건 한 번은 실행됩니다.
do구문
while (조건식);
- 구문
테스트 조건이 참일 때마다 한 번이상 실행되는 구문입니다. 만약 루프 내에서 여러 구문을 반복 실행 시키고 싶으시다면, 다음 명령을 사용합니다.
block 구문을 활용하여 ({ ... }) 이런 식으로 그룹화합니다.
- 조건식
루프가 실행될 때마다 평가되는 식입니다. 만약 조건식이 참으로 평가되었다면, 구문 이 다시 실행됩니다. 만약 조건식이 거짓으로 평가되었다면, 자바스크립트는 do...while. 구문 밑에 있는 구문들을 실행시킵니다.
Author And Source
이 문제에 관하여(Algorithm | 정수 내림차순으로 배치하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kihyeon8949/Algorithm-정수-내림차순으로-배치하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)