프로그래머스 Lv.1 정수 내림차순으로 배치하기

Lian Kim·2022년 8월 15일
0

coding-test

목록 보기
8/19

정수 내림차순으로 배치하기

문제

문제 설명

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.


입출력 예

nreturn
118372873211

제한 사항

  • n은 1이상 8000000000 이하인 자연수입니다.


풀이

나의 풀이

  1. n을 String으로 형 변환
  2. split() 메서드로 한 문자씩 배열에 담는다.
  3. 각 자릿수에 해당하는 숫자가 담긴 배열을 오름차순 정렬
  4. join() 메서드로 각 문자들을 하나의 문자열로 통합시켜준다.
  5. String이 된 값에 1을 곱해서 Number로 형 변환
function solution(n) {
    return (n.toString().split('').sort((a, b) => b - a).join('')) * 1;
}

다른 사람들의 풀이

숫자로 접근하는 것이 실행 속도가 더 빠르다고 한다.

  1. n을 10으로 나눈 나머지를 nums 배열에 담고 n은 n을 10으로 나눈 값을 내림한 값으로 만들어주며, 각 자릿수에 해당하는 숫자를 배열에 담는다. (n이 0보다 클 때까지만)
  2. 각 자릿수에 해당하는 숫자가 담긴 배열을 오름차순 정렬
  3. 숫자를 더하지 않고 옆에 붙여주기 위해서 join() 메서드 사용
  4. String이 된 값에 1을 곱해서 Number로 형 변환
function solution(n) {
    let nums = [];
    do {
        nums.push(n % 10);
        n = Math.floor(n / 10);
    } while(n > 0)

    return nums.sort((a,b)=>b-a).join('')*1;
}


WIL

자릿수별로 숫자 자르기

do {
	nums.push(n % 10);
	n = Math.floor(n / 10);
} while(n > 0)

숫자가 0보다 클 때까지,
숫자를 10으로 나눈 나머지를 배열에 담고, 숫자는 현재 값을 10으로 나눈 뒤 소수점 이하를 내림한 값으로 업데이트 시켜주는 작업을 반복한다.

0개의 댓글