프로그래머스 가장 큰 수 Javascript

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.

예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.

0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.

가장 큰 수Lv.2

42746

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

해설

입력된 배열에 있는 정수들을 재배열하여 만들 수 있는 가장 큰 수를 찾습니다. 이를 위해 문자열 조작 및 정렬지식이 필요합니다.

  • Name
    numbers.map((el) => el.toString())
    Type
    Description

    numbers 배열의 모든 요소를 문자열로 반환합니다. 이렇게 하면 각 숫자를 개별 문자로 취급하여 정렬할 수 있습니다.

  • Name
    sort((a, b) => (b+a) - (a+b))
    Type
    Description

    정렬 알고리즘의 비교 함수를 사용해 두 개의 문자열을 연결한 다음 대소 관계를 통해 두 요소를 비교 정렬합니다. 이렇게 하면 각 숫자를 최적의 정렬을 통해 가장 큰 수를 만들 수 있게 됩니다.

  • Name
    join()
    Type
    Description

    문자열로 변환된 정렬된 숫자 배열을 다시 하나의 문자열로 결합합니다. 가장 큰 수의 문자열입니다.

  • Name
    return result[0]
    Type
    Description

    첫 번째 문자가 "0"인 경우 모든 숫자가 0입니다. 따라서 0을 반환하고 그렇지 않다면 결과 문자열을 반환합니다.

가장 큰 수

function solution(numbers) {
  let result = numbers.map(el => el.toString()).sort((a, b) => (b+a) - (a+b)).join("");

  return result[0] === "0" ? "0" : result;
}