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('') 함수를 사용해 하나의 문자열로 만들어줍니다.
그리고 그 문자열 앞에 + 를 붙여 숫자로 변환시켜주면 문제가 해결됩니다.
도움이 되셨다면 공감, 댓글 부탁드립니다!
궁금하신 점이나 요청 사항은 언제든지 말씀 해주세요!
감사합니다.
'Developer > Algorithm' 카테고리의 다른 글
Programmers 프로그래머스 코딩테스트 연습 - 자연수 뒤집어 배열로 만들기 (JavaScript) (0) | 2020.09.03 |
---|---|
Programmers 프로그래머스 코딩테스트 연습 - 제일 작은 수 제거하기 (JavaScript) (0) | 2020.09.02 |
Programmers 프로그래머스 코딩테스트 연습 - 수박수박수박수박수박수? (JavaScript) (0) | 2020.08.31 |
Programmers 프로그래머스 코딩테스트 연습 - 문자열 다루기 기본 (JavaScript) (0) | 2020.08.30 |
Programmers 프로그래머스 코딩테스트 연습 - x만큼 간격이 있는 n개의 숫자 (JavaScript) (0) | 2020.08.28 |
댓글