문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다.
n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요.
예를들어 n이 118372이면 873211을 리턴하면 됩니다.
제한조건
n은 1이상 8000000000이하인 자연수입니다.
function solution(n) {
var answer = 0;
var arr = n.toString().split('');
arr.sort((a,b)=> b-a);
answer = parseInt(arr.join(''), 10);
return answer;
}
var arr = n.toString().split('');
숫자 n을 문자열로 변환한 뒤, split('')을 통해 각 자릿수를 배열로 분리
split('')
문자열 " 12345 " 가 있다면
split('')을 사용하여 문자열의 각각의 문자를 배열의 각 요소로 들어가게 함.
결과 >> ["1","2","3","4","5"]
arr.sort((a, b) => b - a);
배열을 내림차순으로 정렬
sort()메서드는 배열의 요소들을 정렬할 때 사용.
() 안에는 비교함수를 넣어야 함.
정렬함수 (a,b) => b-a 의 동작
- sort()는 배열의 요소를 두 개씩 비교
- (a,b)는 배열에서 비교할 두 숫자를 의미
- b-a는 두 숫자를 비교하는 방식으로 계산한 결과에 따라 두 요소의 순서를 결정한다.
- 결과가 양수면, b가 a보다 앞에 있어야 하므로 순서를 바꾼다.
- 결과가 음수면, 순서를 바꾸지 않는다.
- 결과가 0이면, 순서를 그대로 유지한다.
answer = parseInt(arr.join(''), 10);
배열 arr를 하나의 문자열로 합친 후, 그 문자열을 정수로 변환
join('')
배열의 모든 요소를 하나의 문자열로 합치는 메서드
괄호 안에 빈 문자열('')을 넣으면 요소들 사이에 아무 구분자 없이 그대로 합친다.
let arr = [8, 7, 3, 2, 1, 1];
let str = arr.join('');
console.log(str); // "873211"
parseInt( ... , 10)
문자열을 정수로 변환하는 함수.
두 번째 인자로 기수(radix)를 받는다. 여기서 10은 10진수로 변환하라는 의미이다.
즉 문자열 "873211"을 10진수 정수로 변환한다.
'알고리즘' 카테고리의 다른 글
서울에서 김서방 찾기 [indexOf()] 자바스크립트 (0) | 2024.10.21 |
---|---|
정수 제곱근 판별 [Math.sqrt(), Number.isInteger(), Math.pow(a,b)] (javascript) (2) | 2024.10.18 |