0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
function solution(numbers) {
numbers = numbers
.map((e) => String(e))
.sort((a, b) => (b + a) - (a + b))
.join("");
return !Number(numbers) ? "0" : numbers;
}
숫자를 문자로 바꾸고 붙힌 다음에 그 붙힌 수를 내림차순으로 정렬시켰다.
그리고 나서 배열을 문자열로 합쳤는데 마지막 케이스가 통과가 안되서 이리 저리 궁리해보니 0만 있는 경우를 신경을 안써줘서 그런거였다.
만약 인자 배열 numbers
가 [0,0,0]
이라면 반환되어야 하는건 '0'
이지만 실질적으로 '000'
이 되어버린다.
그래서 그 경우의 수를 하나 집어주니 통과되었다.
출처: 프로그래머스 코딩 테스트 연습,