January 22, 2021
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
0
일 경우 0000
으로 출력이 되기 때문에, 그 경우만 따로 삼항연산자로 처리function solution(numbers) {
// 두 숫자를 이어붙였을 때 더 큰수가 앞에오도록 함.
numbers.sort((a, b) => {
if (String(a) + String(b) < String(b) + String(a)) return 1
return -1
})
const val = numbers.join('')
return Number(val) === 0 ? String(0) : String(val)
}
// 다른사람들의 해결방법을 보니, 원리는 동일하다.
// 다만, 문자열로 표현하는데 템플릿리터럴을 사용한분도 있었다.
// 왜 그생각을 못했지..?