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

문제 풀러 가기

정수 내림차순으로 배치하기 (Lv.1)


문제

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

제한 사항

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

입출력 예

nreturn
118372873211

나의 풀이

Method Chaining

💡 메소드를 이어붙여 사용하는 테크닉을 Method Chaining이라고 한다.

function solution(num) {
  let str = num + ''
  return Number(str.split('').sort((a, b) => b - a).join(''));
}

console.log(solution(13913)); // 93311
console.log(solution(783211)); // 873211
console.log(solution(1769282)); // 9876221

각 자리를 나누어 배열을 받고, sort 메소드로 내림차순으로 재배치하여 다시 join한다. 인자를 가져올땐 문자열로 변환, 반환할땐 숫자로 바꿔주는 것이 번거롭다. (+2점)
sort 메소드는 문자열을 정렬하는 기능을 한다. 숫자 값의 크기가 아닌 유니코드 기준으로 정렬하기 때문에 숫자 배열에 사용한다면 별도의 코드를 사용해야 한다


다른 사람의 풀이

다른 풀이 (1)

function solution(n) {
  const newN = n + "";
  const newArr = newN
    .split("")
    .sort()
    .reverse()
    .join("");

  return +newArr;
}

sort의 default는 오름차순이기 때문에 reverse를 사용하였다.

다른 풀이 (2)

function solution(n) {
    // 문자풀이
    return parseInt((n+"").split("").sort().reverse().join(""));
}

Number 대신 parseInt를 사용하여 숫자로 출력한다. parseInt란 문자열의 첫 부분으로부터 정수만 긁어오는 메소드이다. 주로 CSS의 숫자 뒤 px, em, rem 등을 제거하여 값만 추출할때 사용하면 좋다.
소수점까지 긁어오려면 parseFloat을 사용한다

좋은 웹페이지 즐겨찾기