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

jaemin·2020년 9월 23일
0

프로그래머스

목록 보기
2/18
post-thumbnail

정수 내림차순으로 정렬하기

문제 설명

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

입출력 예

nreturn
118372873211

풀이 과정 설계

숫자를 내림차순으로 정렬해야 하므로 sort() 함수를 사용하겠다고 생각했다.
sort()함수는 배열안의 숫자나 문자를 정렬하는 함수이다. 따라서 '118372'라는 하나의 수를 하나하나 뜯어 배열안에 담아야 한다.
[1, 1, 8, 3, 7, 2] 이렇게 하나씩 분리하는데 사용하는 함수중에 내가 알고 있는 함수는 split()함수이다.
split()함수는 문자열을 분할하는 메서드이므로, 숫자를 문자열로 분할해야 한다.

정리하자면,
1. 숫자를 문자열로 변환한다.
2. split() 함수를 이용해 숫자 한 개씩 분리한다.
3. sort() 함수를 이용해 내림차순으로 정렬한다.
4. split함수로 분리해 놓은 숫자를 하나로 합친다.
5. 문자열로 변환한 배열을 다시 숫자로 되돌려 놓는다.

풀이 과정

function solution(n) {
    return +String(n)
        .split('')
        .sort((a, b) => b - a)
        .join('')     
}

수업 시간에 배운 암묵적 타입 변환을 사용해 숫자로 변환하였다.

숫자로 타입 변환 : +X(앞에 +연산자를 붙이면 암묵적으로 숫자 타입으로 변환된다.)
문자열로 타입 변환 : X + ''(+연산자의 피연산자중에 하나라도 문자열이 있다면 X도 문자열로 타입 변환된다.)
불리언으로 타입 변환 : !!X(앞에 !부정 논리 연산자를 두 번 사용하면 불리언으로 타입 변환된다.)

알아두면 간단하게 타입 변환할 수 있다.

다른 사람의 풀이

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

parseInt 함수를 사용하였다.

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

  return +newArr;
}
profile
프론트엔드 개발자가 되기 위해 공부 중입니다.

0개의 댓글