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

ne_ol·2022년 1월 17일
0
post-thumbnail

문제 설명

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

제한 조건

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

입출력 예

nreturn
118372873211

기본 solution 코드

function solution(n) {
    var answer = 0;
    return answer;
}

문제 풀이

function solution(n) {
    return +((n+"").split('').sort((a,b) => b-a)).join('');
    //string으로 바꾸고 모든 문자를 split하여 내림차순으로 정렬하고 다시 integer로 바꾼다
}

풀이 설명

number type인 n을 string으로 먼저 바꿔서 sort하면 각 요소들이 하나의 요소들로 나뉘기 때문에, join으로 다시 합쳐줬다.

사용 함수

  • .join(): 시간의 특정 지점을 나타내는 Date 객체를 플랫폼에 종속되지 않는 형태로 생성
    • .join(): '', '', '' 이렇게 반환
    • .join(''): ' ' 하나의 string으로 반환

(출처: https://developer.mozilla.org/ko/)


다른 풀이

function solution(n) {
    return +(n+"").split('').sort().reverse().join("");
}

다른 풀이 설명

  1. 사용된 함수
  • .reverse(): 호출한 배열을 반전하고 원본 배열을 변형하며 그 참조를 반환
  1. 풀이
  • (n+"").split('') -> [ '1', '1', '8', '3', '7', '2' ]
  • (n+"").split('').sort() -> [ '1', '1', '2', '3', '7', '8' ] => .sort parameter인 compareFunction을 생략하면 배열은 각 요소의 문자열 변환에 따라 각 문자의 유니 코드 코드 포인트 값에 따라 정렬. (i.e. "11"이 "2" 보다 먼저, "70"이 "8" 보다 먼저 배치된다는 뜻) 하지만 여기서는 모두 1의 자리 숫자들이라 자동으로 오름차순 배치가 된다.
  • (n+"").split('').sort().reverse() -> [ '8', '7', '3', '2', '1', '1' ]
  • (n+"").split('').sort().reverse().join("") -> "873211"
  • 맨 앞에 +를 붙혀 +string -> int 로 바꿔준다.
  1. .sort()가 parameter 없이 쓰일 때와 .reverse()를 알았더라면
profile
개발되는 중입니다.

0개의 댓글