문제 설명

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

제한 조건

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

입출력 예

nreturn
118372873211

✍ SOLUTION1

const solution = (n) => 
    Number(Array.from(String(n)).sort((a, b) => b - a).join(""));

/*
내가 처음 작성한 코드이다.
메서드를 많이 사용해서 좋은 코드는 아닌거같다..

Array.from을 통해서 String으로 변환한 n을 배열로 만들어준 후 sort를 사용하여 내림차순 해주었다.
join으로 다시 String으로 변환해주고 마지막에 Number로 변환하여 그 값을 return해준다.
*/

✍ SOLUTION2

const solution = (n) => {
  const nString = String(n);
  const newArr = nString
    .split("")
    .sort((a, b) => b - a)
    .join("");

  return Number(newArr);
}

/*
SOLUTION1에서는 Array.from 메서드를 사용하여 배열로 만들어주었는데 여기서는 split을 통해서
배열로 만들어 주었다. 그 외의 방법은 거의 동일하다.
*/

const solution = (n) => {
  const nString = String(n);
  const newArr = nString
    .split("")
    .sort()
    .reverse()
    .join("");

  return Number(newArr);
}

/*
위의 코드에서 sort를 기본 오름차순으로 해준 후 reverse 메서드를 사용하여 배열의 순서를 바꿔
주는 식으로 했을때 코드 실행속도가 더 빨랐다.
거의 비슷하긴 했지만 메서드를 많이 쓴다고 해서 더 느린건 아닌거같다.
*/

출처 : 프로그래머스 스쿨 | 코딩테스트 연습

0개의 댓글