본문 바로가기
알고리즘 문제

[프로그래머스]정수 내림차순으로 배치하기_JavaScript

by rinny01 2025. 1. 3.
반응형

문제

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.

 

입출력 예

n : 118372 > return : 873211

 

순서 생각하기

  • 우선은 받아온 n숫자를 배열로 바꾼다.
  • 그 배열을 내림차순으로 정렬한다.
  • 정렬된 배열을 다시 문자 or 숫자열으로 뽑아낸다.

 

첫시도부터 틀렸다.

  • const arr = n.toString().split('').map();
  • map() 메서드
array.map(callback(currentValue, index, array))
  • callback : 배열의 각 요소에 대한 호출할 함수
  • currentValue : 현재 처리중인 배열의 요소
  • index (선택) : 현재 처리 중인 요소의 인덱스
  • array (선택) : map()이 호출된 배열

 

  • const arr = n.toString().split('').map(); 이 실행 안되는 이유
    • map()메서드를 사용할때 반드시 매개변수를 전달해야하기 때문이다.
    • 배열의 각 요소에 대해 실행할 함수 (콜백)을 인자로 받아야하는데 빈값이라서 오류가 났다.
    • .map(Number); 로 문자를 숫자로 변환시켜주는 콜백함수를 넣어주자.
function solution(n) {
    const arr = n.toString().split('').map(Number); 
    // 받아온 값을 문자로 바꾼다 > 자른다 > map함수로 숫자로 바꿔 배열로 넣는다.
    arr.sort();
    arr.sort(function(a, b)  {
      return b - a;
    });
    var arrString = '';
    for(let i = 0; i < arr.length; i++){
        arrString += arr[i];
        //console.log(arrString ,'arrString')
    }
    return arrString
}
console.log(solution(118372))

 

 

떙이란다... 실행결과가가 "873211"인걸 보니 문자열인가보다.

숫자로 바꾸어주자.

  • return Number(arrString);

최종코드

function solution(n) {
    const arr = n.toString().split('').map(Number); 
    arr.sort();
    arr.sort(function(a, b)  {
      return b - a;
    });
    var arrString = '';
    for(let i = 0; i < arr.length; i++){
        arrString += arr[i];
        //console.log(arrString ,'arrString')
    }
    return Number(arrString);
}
console.log(solution(118372));

 

 

응 아주 좋아!! 성공이다!!!

반응형
LIST