알고리즘

정수 내림차순으로 배치하기 [sort, split, join] (javascript)

려낭 2024. 10. 17. 23:45

문제 설명

 

함수 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 의 동작

  1. sort()는 배열의 요소를 두 개씩 비교
  2. (a,b)는 배열에서 비교할 두 숫자를 의미
  3. 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진수 정수로 변환한다.