#AIL_23.11.14 // Programmers_정수 내림차순으로 배치하기
## 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`를 통해 이문자열을 숫자로 변환하여 반환합니다 .
# 처음으로 길게 풀어보지 않고 써본 문제였다. 항상 문제를 풀면서 천재적인 생각을 하는 분들이 부러웠는데 오늘 하루만큼은 보람을 느끼는 하루였다. 아직도 갈길이 멀지만 그동안 노력한 것을 조금이나만 보상 받은 기분이다.