:ledger: 문제 설명

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

:one: 제한사항

  • n은 1이상 8000000000 이하인 자연수입니다.

:two: 입출력 예

N return
118372 873211

:three: 프로그래머스에서 제공한 코드

처음 프로그래머스에서 작성된 코드는 아래와 같다.

function solution(n) {
  var answer = 0;
  return answer;
}

:ledger: 문제 풀이

const solution = (n) => {
  let arr = (n + "").split("").map(Number);
  arr.sort((a, b) => b - a);
  return Number(arr.join(""));
};

:one: 함수 선언

  • 화살표 함수를 사용하여 n 매개변수를 받는다.

:two: 풀이

  • n에 전달받은 값을 (n + '').split('')사용하여 n의 값 118372를 배열[1,1,8,3,7,2]로 만든 후 변수 arr에 담아줌
  • 배열로 만들어 준 후 sort((a, b) => b - a)를 사용하여 arr 배열의 값을 내림차 순으로 변경함
  • Number(arr.join('')) 을 통해 배열 arr을 문자열로 만들어 주고 정수로 리턴함

:three: 결과 반환

  • let arr = (n + '').split('').map(Number) // [1,1,8,3,7,2]
  • arr.sort((a,b) => b - a) // [8,7,3,2,1,1]
  • Number(arr.join('')) // 873211

:four: 실행

  • console.log(solution(118372)) 실행하면 873211가 출력된다.

:fire: 다른 사람의 풀이 참고

오늘은 오름차순, 내림차순을 배웠다.
아직까지 내가 아는게 많이 없어서 다른 사람의 풀이를 보며 다양한 문법을 보는것이 너무 감사하다.

// [16명] awer000 , nhj-_- , minho.choi , rocks 외
function solution(n) {
  // 숫자를 문자열로 변환
  const newN = n + "";

  // 문자열을 배열로 변환하고 정렬한 다음, 역순으로 배열하고 다시 문자열로 합침
  const newArr = newN
    .split("") // 문자열을 각 문자로 쪼갬
    .sort() // 기본적으로 오름차순 정렬
    .reverse() // 역순으로 변환하여 내림차순으로 만듦
    .join(""); // 다시 문자열로 합침

  // 문자열을 숫자로 변환하여 반환
  return +newArr;
}

// [14명] Chi Hoon Koo , Park Duyoung , 181203s , 이은빈 외
function solution(n) {
  // 문자풀이
  return parseInt((n + "").split("").sort().reverse().join(""));
}

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges