0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
우선 String
하나를 만들어줘야 한다. 거기에서 비교한 숫자가 큰 수를 넣어주면 된다. 배열에 있는 수를 모두 String
으로 바꿔주고 sort()
함수를 이용하여 큰 순서대로 배열을 해주면 된다. 중요한 점은 문자열에서 +연산자는 문자열을 이어 붙여주는 역할을 하지만 -연산자는 숫자처럼 계산이 된다. 또한 오름차순, 내림차순을 할 때에는 앞과 뒤 문자열을 이어 붙여서 큰 수를 뒤에 붙이는 식으로 연결을 하면 된다. 모든 수가 "0"이면 "0"을 return 하게끔 한다.
sort()
를 사용하게 된다면 내림차순은 b-a가 음수이면 a가 앞으로 오게끔 하고 오름차순은 a-b가 음수일 때 a가 앞으로 오게끔 하면 된다. 이 문제에서는 sort(a,b) => (b+a) - (a+b)
로 해주면 된다.
function solution(numbers) {
for(let i=0; i<numbers.length; i++){
numbers[i] = String(numbers[i]);
}
numbers = numbers.sort((a,b) => (b+a) - (a+b));
if(numbers[0] === "0") return "0"; // 모든 수가 "0"인 경우
else return numbers.join('');
}