문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
핵심 아이디어
- 정렬 기준: 숫자 a, b에 대해 String(a) + String(b)와 String(b) + String(a)를 비교하고, localeCompare를 사용하여 더 큰 쪽이 먼저 오도록 정렬한다.
- 최종 결과: 정렬된 숫자 배열을 문자열로 변환해 이어 붙여 가장 큰 수를 만든다.
- 예외 처리: 배열에 있는 모든 숫자가 0일 때는 "0"을 반환한다.
정답
function solution(numbers) {
numbers.sort((a, b) => {
const order1 = String(a) + String(b);
const order2 = String(b) + String(a);
return order2.localeCompare(order1);
});
if (numbers[0] === 0) {
return "0";
}
let answer = numbers.join("");
return answer;
}