코딩테스트 입문

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

강민승 2022. 11. 21. 10:49

문제

나의 풀이

첫번째시도

function solution(n) {

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

// "8,7,3,2,1,1"

 

결과값이 문자열로 정렬이 되어서 바보같이 여기서 멈췄던 게 가장 아까웠다. 어떻게 문자열을 없애서 자연수로 873211을 만들까 생각하다가 결국 다른 방법을 도전.

 

 

두번째시도

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

 결국 코드가 퇴보하기 시작했다. 머리가 나쁘면 돌아간다고 지금 푼다음에서야 느끼게 된다. 정말 간단한 방법으로 해결할 수 있었던 것인데 너무 아쉬웠다.

 

간결한 코드

function solution(n) {

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

자 첫번째 시도했던 방법과 다른점을 찾아보시오.

join함수에 ""을 넣으면 문자열로 , , 되어있던 것들을 ""안에 모아주는 것이었는데, 바보같이 그걸 까먹고 퇴보해버렸다.

parseInt로 코드 전체를 묶어서 문자열을 자연수로 바꿔준 후 리턴.