ALGORITHM/PROGRAMMERS
[프로그래머스] 정수 내림차순으로 배치하기 - JavaScript
thisisyjin
2022. 7. 6. 17:06
javascript
문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
- n은 1이상 8000000000 이하인 자연수입니다.
예시
입출력 예
n return
118372 873211
내가 작성한 코드
function solution(n) {
const arr = Array.from(String(n)).sort();
const rev = arr.reverse();
return Number(rev.join(''));
}
우선 문자열로 바꾼 n을 Array.from
을 이용하여 배열로 만들고, sort
로 오름차순 정렬한다.
(참고로, 한자리 숫자이므로 문자열처럼 사전식 정렬 해도 크기순으로 정렬된다.)
오름차순 배열한 것을 reverse()
메서드로 뒤집은 후, join('')
으로 합친 것을 리턴한다.
실행 결과
테스트 1 〉 통과 (0.06ms, 30.2MB)
테스트 2 〉 통과 (0.05ms, 30MB)
테스트 3 〉 통과 (0.11ms, 30.1MB)
테스트 4 〉 통과 (0.04ms, 30.1MB)
테스트 5 〉 통과 (0.04ms, 30.1MB)
테스트 6 〉 통과 (0.04ms, 30.2MB)
테스트 7 〉 통과 (0.07ms, 30MB)
테스트 8 〉 통과 (0.04ms, 30.1MB)
테스트 9 〉 통과 (0.05ms, 30MB)
테스트 10 〉 통과 (0.04ms, 29.9MB)
테스트 11 〉 통과 (0.07ms, 30.2MB)
테스트 12 〉 통과 (0.04ms, 30MB)
테스트 13 〉 통과 (0.04ms, 30.1MB)
테스트 14 〉 통과 (0.06ms, 30.1MB)
테스트 15 〉 통과 (0.04ms, 30.1MB)
테스트 16 〉 통과 (0.04ms, 29.6MB)
리팩토링
function solution(n) {
const arr = Array.from(String(n)).sort((x, y) => y - x);
// const arr = String(n).split('').sort((x, y) => y - x);
return Number(arr.join(''));
}
실행 결과
테스트 1 〉 통과 (0.05ms, 30.1MB)
테스트 2 〉 통과 (0.05ms, 30.1MB)
테스트 3 〉 통과 (0.08ms, 30.1MB)
테스트 4 〉 통과 (0.05ms, 30.2MB)
테스트 5 〉 통과 (0.05ms, 30.1MB)
테스트 6 〉 통과 (0.05ms, 30MB)
테스트 7 〉 통과 (0.05ms, 30.2MB)
테스트 8 〉 통과 (0.05ms, 30MB)
테스트 9 〉 통과 (0.07ms, 29.9MB)
테스트 10 〉 통과 (0.05ms, 30MB)
테스트 11 〉 통과 (0.05ms, 30.1MB)
테스트 12 〉 통과 (0.05ms, 29.9MB)
테스트 13 〉 통과 (0.05ms, 30.1MB)
테스트 14 〉 통과 (0.05ms, 30.2MB)
테스트 15 〉 통과 (0.14ms, 30.1MB)
테스트 16 〉 통과 (0.05ms, 30.4MB)
성능이 개선되었다.
테스트 15에서는 오히려 String(n).split('')
이 성능이 더 좋았다.