정수 내림차순으로 배치하기

Sheryl Yun·2023년 6월 29일
0

문제 링크🔗

처음 풀이

문제를 읽으면서 바로 식을 짜서 풀었다. 바로 정답 처리되었지만 점수가 1점이 나왔다. 😅

function solution(n) {
    return parseInt(n.toString().split('').sort((a, b) => b - a).join(''));
}

새로운 풀이

다른 사람 풀이를 보고 알게 된 점

  • 문자열 변환이 아닌 숫자로 바로 풀면 더 빠르다.
  • 숫자 1을 곱해줌으로써 형변환이 가능하다. (변환 메서드 사용 x)

do-while과 1을 곱해서 형변환하는 코드를 참고하여 다시 풀었다.

function solution(n) {
    let num = [];
    
    do {
        num.push(n % 10);
        n = Math.floor(n / 10);
    } while (n > 0);
    
    return num.sort((a, b) => b - a).join('') * 1
}

do-while을 안 써도 되지 않을까 해서 do-while을 주석 처리하고 return 문의 num.sort를 [...n].sort로 실행해봤는데 n is not iterable이라는 에러가 떴다.

숫자는 iterable하지 않고, 문자열은 iterable하기 때문

즉, do-while을 쓴 이유가 숫자를 한 자리씩 떼서 배열에 담기 위해서였다.


이후 num 배열을 sort로 내림차순 정렬하고, join을 써서 문자열로 붙인 다음, (parseInt 메서드 없이) 숫자 1을 곱해서 숫자형으로 만들어줬다.

** 여기서 처음 풀 때 헷갈렸던 점이 split()은 문자열에만 쓸 수 있지만 join은 문자열이 아닌 '배열'에 쓰기 때문에 앞의 배열이 꼭 문자열 (배열)이 아니어도 된다.

profile
영어강사, 프론트엔드 개발자를 거쳐 데이터 분석가를 준비하고 있습니다 ─ 데이터분석 블로그: https://cherylog.tistory.com/

0개의 댓글