ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • #AIL_23.11.14 // Programmers_정수 내림차순으로 배치하기
    AIL( Algorithm I Learned) 2023. 11. 14. 22:53

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

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

    ***제한 조건
    n은 1이상 8000000000 이하인 자연수입니다.

    ***입출력 예
    n return
    118372 873211

    ## solution.JavaScript

    1. 문제의 접근 방식

    주어진 문제는 정수 n의 각 자리수를 큰 순서대로 정렬하여 새로운 정수를 만드는 것입니다. 


    2. 문제풀이

    function solution(n) {
        var answer = 0;
        return Number(String(n).split("").sort((a,b) => b - a).join(""))
        return answer;
    }
    /*
    테스트 1
    입력값 〉	118372
    기댓값 〉	873211
    실행 결과 〉	테스트를 통과하였습니다.
    */

     

    1. `String(n)`을 통해 정수 n을 문자열로 변환합니다. 

     

    2. `split("")`을 이용하여 문자열을 각 자리 숫자로 분할합니다. 

     

    3. `sort((a,b) => b - a)`를 이용하여 숫자를 내림차순으로 정렬합니다. 

     

    4. `join("")`을 사용하여 정렬된 숫자 배열을 다시 하나의 문자열로 결합합니다. 

     

    5. `Number()` 함수를 사용하여 문자열을 정수로 변환하여 리턴합니다. 

     


    3. 다른사람의 문제풀이 및 접근방식 분석

    function solution(n) {
    const newN = n + "";
    const newArr = newN .
    split("")
    .sort()
    .reverse()
    .join("");
    
    return +newArr;
    }
    /*
    테스트 1
    입력값 〉 118372
    기댓값 〉 873211
    실행 결과 〉 테스트를 통과하였습니다.
    */

     

    1. `const newN = n + "";`을 통해 입력된 정수 `n`을 문자열로 변환합니다. 

     

    2. `split("")`를 사용하여 문자열을 각 자릿수 별로 배열 분할합니다. 

     

    3. `sort()`를 통해 각 자릿수를 오름차순으로 정렬합니다. 

     

    4. `reverse()`를 사용하여 정렬된 배열을 뒤집어 큰 순서로 정렬합니다. 

     

    5. `join("")`을 이용하여 정렬된 배열을 다시 하나의 문자열로 결합합니다.

     

    6. `+newArr`를 통해 문자열을 숫자로 변환한 후 ,이를 `return`을 통해 반환합니다. 

     

    ----

     

    위 두개의 코드는 주어진 문제를 해결하는데 동일한 접근방식을 사용했지만, 기존의 코드와는 다르게 정렬할 때 `sort().reverse()`를 사용하여 오름차순 정렬 후 뒤집는 방식으로 처리하고 있습니다. 


     

    # const newN = n + ""; 에 대하여

    입력된 정수 `n`을 문자열로 변환하는 과정입니다. JavaScript에서 문자열과 다른 데이터 타입을 더할 때, JavaScript는 자동으로 숫자를 문자열로 변환합니다.

     

    `n + ""`을 통해 `n`을 빈 문자열과 더하면, `n`이 문자열로 변환됩니다. 이렇게 함으로써, `newN`에는 `n`의 각 자릿수를 문자열로 담게 됩니다. 

    # `+newArr`에 대하여

     `newArr` 변수에 저장된 문자열을 숫자로 변환하는 과정입니다. JavaScript에서 `+` 연산자는 피연산자를 숫자로 변환랍니다. `newArr`에는 `n`의 각 자릿수를 큰 순서대로 정렬하여 문자열로 만든 결과가 저장되어 있습니다. 그 후 `+newArr`를 통해 이문자열을 숫자로 변환하여 반환합니다 .

    # 처음으로 길게 풀어보지 않고 써본 문제였다. 항상 문제를 풀면서 천재적인 생각을 하는 분들이 부러웠는데 오늘 하루만큼은 보람을 느끼는 하루였다. 아직도 갈길이 멀지만 그동안 노력한 것을 조금이나만 보상 받은 기분이다.

     

     

Designed by Tistory.