본문 바로가기
Developer/Algorithm

Programmers 프로그래머스 코딩테스트 연습 - 정수 내림차순으로 배치하기 (JavaScript)

by roqkfrlfhr 2020. 9. 1.

Programmers 프로그래머스 코딩테스트 연습 - 정수 내림차순으로 배치하기 (JavaScript)

 

Programmers의 코딩테스트 연습문제 Level 1의 정수 내림차순으로 배치하기 문제를 JavaScript를 사용하여 문제를 풀어보도록 하겠습니다.

 

문제 설명

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

 

제한 조건

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

 

입출력 예

n return
118372 873211

 

 

작성한 답

solution.js

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

 

설명

정수 n을 매개변수로 입력받아, n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주는 함수를 완성하는 문제입니다.

정수 n의 각 자릿수를 sorting만 해주면 되는 문제죠.

하나부터 차근차근 따져가면 정말 너무도 쉬운 문제이기 때문에 작성한 답의 한줄의 코드를 한줄씩 풀어서 작성한 코드를 먼저 보여드리면 이해가 빠르실 겁니다.

solution(118372);

function solution(n) {
    var answer = n.toString();
    console.log(answer);    // "118372"
    
    answer = answer.split('');
    console.log(answer);    // [ '1', '1', '8', '3', '7', '2' ]
    
    answer = answer.sort((a,b)=>b-a);
    console.log(answer);    // [ '8', '7', '3', '2', '1', '1' ]
    
    answer = answer.join('');
    console.log(answer);    // "873211"
    
    answer = +answer;
    console.log(answer);    // 873211
    
    return answer;
}

코드를 한줄씩 풀어내어 각 과정마다 나오는 값들을 보시니 이해가 잘 되실겁니다.

먼저 각 자릿수를 나눠서 배열에 담기위해 정수 n을 toString()으로 문자열로 변환합니다.

그리고 문자열로 변환한 값을 split('')을 사용해 각 자릿수를 나눠 배열에 담습니다.

그리고 그 배열을 sort()를 사용하는데 안에 인수로 비교할 대상인 a,b를 가지고 b-a를 하면 내림차순으로 정렬이 됩니다.

그럼 내림차순으로 정렬된 배열을 다시 join('') 함수를 사용해 하나의 문자열로 만들어줍니다.

그리고 그 문자열 앞에 + 를 붙여 숫자로 변환시켜주면 문제가 해결됩니다.

 

 

 

도움이 되셨다면 공감, 댓글 부탁드립니다!

궁금하신 점이나 요청 사항은 언제든지 말씀 해주세요!

 

감사합니다.


댓글