찰리의 이야기

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

찰리: 코딩 연습

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

쨜리 2021. 9. 13. 20:06
반응형

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

 

 

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

제한 조건

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

 

입출력 예

nreturn

118372 873211

 

어진 코드 

function solution(n) {
    var answer = 0;
    return answer;
}

처음 문제를 접했을 때 내장 메서드를 활용할 생각을 안했어서 

많이 헤메었는데, 메서드 쪽으로 접근하니 간단하게 처리가 가능했습니다.

 

function solution(n) {
    return Number(n.toString().split("").sort((a, b)=> b - a).join(""));
}

제가 작성했지만 너무 명쾌해서 기분이 좋아집니다.

일단 파라미터로 입력받은 n을 문자열로 변경시킨 다음 split("")으로 배열로 변경시킨 다음

sort()를 이용해서 내림차순으로 순서를 바꾸었습니다.

그리고 배열을 다시 join("")으로 문자열로 바꾸어주고,

Number()생성자로 숫자로 만들어주었습니다.

 

여기까지가 제 풀이 방법이고

다른 풀이법도 살펴보았습니다.

function solution(n) {
    // 문자풀이
    // return parseInt((n+"").split("").sort().reverse().join(""));

    // 숫자풀이
    var r = 0, e = 0, arr = [];

    do {
        e = n%10;

        // 정렬
        if (arr.length == 0) arr.push(e);
        else for (var i=0, len=arr.length; i<len; i++) {
            if (arr[i] <= e) { arr.splice(i,0,e); break; }
            if (i == len-1) arr.push(e);
        }
    } while (n = Math.floor(n/10), n>0);

    return parseInt(arr.join(""));
}

splice() 메서드를 이용해서 배열에 요소를 컨트롤하는게 핵심인 것 같습니다.

splice(시작인덱스, 제거 개수, 추가 요소) 를 통해서

배열을 컨트롤 할 수 있다는 점을 고민해보면 좋겠습니다.

 

 

 

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

 

반응형
Comments