코딩테스트 연습 06: [프로그래머스] 정수 내림차순으로 배치하기

gyomni·2022년 1월 21일
0

Algorithm

목록 보기
6/33
post-thumbnail

출처 : 프로그래머스
사용 언어 : JavaScript

초기 코드

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

내가 작성한 코드

function solution(n) {
    var answer = 0;
    let a = String(n);
    let b= a.split("").map(Number);
    for(let i=0; i<b.length; i++){
       let tmp=[];
        if(b[i]<b[i+1]){
            b.splice(b[i+1], 0, b[i])
        }
        
        }   
    return b;
    }

숫자를 문자열로 바꿔서 나눈뒤 다시 숫자로 된 배열을 만드는 것 까지는 성공한거같은데,,
sort를 사용하고 싶었지만 내림차순에서 생각이 멈춰 헤맸다.. reverse함수를 생각못해냈었다 ㅜㅜ..

function solution(n) {
    var answer = 0;
    let a = String(n);
    let b= Number(a.split("").sort().reverse().join(''));
    
         
    return b;
    }
    

answer은 왜 안지운거지,,,ㅎㅎㅎ
살짝 검색해서 reverse를 보고 두 번 정도 시도해서 성공,,,😅

다른 사람 풀이

// 1) 

function solution(n) {
  const newN = n + "";
  const newArr = newN
    .split("")
    .sort()
    .reverse()
    .join("");

  return +newArr;
}

-------------------------------------------------------------------------------
// 2) 

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

-------------------------------------------------------------------------------
//3)
  
function solution(n) {
 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(""));
}

🙍 📝

코드가 짧으면 일방적으로 좋아보였는데 이 문제에서는 숫자로 계산한 코드가 실행 속도는 더 빠르다고 한다!
메소드를 적절히 잘 사용하는 것도 좋지만 속도도 고려한 코드를 짜도록하자!!

profile
Front-end developer 👩‍💻✍

0개의 댓글