본문 바로가기
코딩 문제/프로그래머스 [ JavaScript ]

[ 프로그래머스 / JavaScript ] 정수 내림차순으로 배치하기

by CODESIGN 2022. 9. 19.

https://school.programmers.co.kr/learn/courses/30/lessons/12933

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명

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

 

제한 조건

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

 

입출력 예

n return
118372 873211

 


나의 문제 풀이

 

n = 118372 일때,

입력 받은 숫자를 string으로 변환하여 split()하면 ["1", "1", "8", "3", "7", "2"]가 된다.

이때 sort()를 b-a로 지정하여 내림차순으로 정렬시켰다.

마지막에 join()을 사용하여 배열로 되어있던것들을 합쳐준뒤 parseInt()로 형변환을 시켜준뒤 return 했다.

 

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

 

 


다른 풀이

 

코드 길이도 나보다 간결하고 runtime도 조금더 효율적이다.

나는 sort()에서 b-a를 설정해줬다면 이 코드에서는 sort()를 해준뒤 reverse()를 사용하여 내림차순으로 정렬해주었다.

 

newArr 앞에 +를 붙여줌으로써 int형으로 return했다. 

 

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

  return +newArr;
}

 

 


다른 풀이

 

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

 

댓글