본문 바로가기
나의 개발일지/알고리즘 테스트

[프로그래머스 - Level 1] 정수 내림차순으로 배치하기 (JS)

by stella_gu 2022. 7. 19.

[문제]

정수 n의 각 자릿수를 큰것부터 작은 순으로 내림차순 정렬한 새로운 정수를 리턴.

 

 

[로직]

1. 정수 n을 문자열로 바꾼다.

2. 빈 배열의 새로운 변수를 지정해준다.

3. for문을 돌려 문자열로 바꾼 n의 자릿수 하나하나를 순서대로 빈 배열에 push해준다.

4. sort() 함수를 이용해 배열을 내림차순으로 정렬해주고, 다시 정수로 변환한다. 

 

 

[코드]

const n = 118372;

function solution(n) {
  let str = n.toString();
  let arr = [];
  for (let i = 0; i < str.length; i++) {
    arr.push(parseInt(str[i]));
  }
  return parseInt(arr.sort((a, b) => b - a).join(''));
}

console.log(solution(n));	// 결고 값 : 873211

1.  .toString()을 이용해 정수 n을 문자열로 바꾼다.

      let str = n.toString()

 

2. 빈 배열의 새로운 변수를 지정해준다.

      let arr = []; 

 

3. for문을 돌려 문자열로 바꾼 n의 자릿수 하나하나를 순서대로 빈 배열에 push해준다.

      arr.push(parseInt(str[i]));

      → 문자열이라 "1"처럼 문자로 push되므로 parseInt()를 이용해 정수로 변환.

 

4. sort() 함수를 이용해 배열을 내림차순으로 정렬해주고, 배열을 합쳐 문자열로 만든 후, 다시 정수로 변환한다. 

     parseInt(arr.sort((a, b) => b - a).join(''));

 

 

 

다른 사람들은 어떻게 풀었나

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

  return +newArr;
}
function solution2(n) {
  //숫자가 분명히 더 빠름
  var nums =[];
  do{
      nums.push(n%10);
      n=Math.floor(n/10);
  } while(n>0)

  return nums.sort((a,b)=>b-a).join('')*1;
  //문자는 느림
  // return (n+"").split('').sort((a,b)=>b-a).join('')*1;
}

 

 

 

 

 

 sort() 오름차순

function compareNumbers(a, b) {
  return a - b;
}

sort() 내림차순

function compareNumbers(a, b) {
  return b - a;
}

 

join() 배열 연결하기  

var a = ['바람', '비', '불'];

var myVar1 = a.join();      // myVar1에 '바람,비,불'을 대입
var myVar2 = a.join(', ');  // myVar2에 '바람, 비, 불'을 대입
var myVar3 = a.join(' + '); // myVar3에 '바람 + 비 + 불'을 대입
var myVar4 = a.join('');    // myVar4에 '바람비불'을 대입

 

 

 

 

 

[참고] sort()

 

Array.prototype.sort() - JavaScript | MDN

sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.

developer.mozilla.org

[참고] join()

 

Array.prototype.join() - JavaScript | MDN

join() 메서드는 배열의 모든 요소를 연결해 하나의 문자열로 만듭니다.

developer.mozilla.org