목차
1. 문제 설명
2. 문제 풀이
3. 정답 코드
1. 문제 설명
0 또는 양의 정수들을 집합이 주어졌을 때 그 수들을 붙여서 만들수 있는 가장 큰 수를 구하는 문제이다.
입출력 예는 다음과 같다.

주의할 점
numbers를 내림차순하여 이어붙인 것이 반드시 가장 큰 수는 아니다.
만약, 2번째 예시를 내림차순 방식으로 답을 구한다면 → "9534303" 이다.
하지만 가장 큰 수는 "9534330" 이므로,
다른 방식을 찾아야했다!
2. 문제 풀이
만약 [3, 30] 이 주어진다면, 가장 큰 수는 "330" 이다.
내림차순을 결정하는 수는 2개의 수를 더한 수이다. ( ≠ 각 수를 내림차순)

(참고) 기본 sort 함수 사용법
[1,2,3,4].sort((a, b)=> b - a);
a는 뒷번호, b는 앞번호이다.
b - a 가 양수라면, 자리 교환을 하지 않는다. 👉 앞번호가 뒷번호보다 크면, 자리 교환을 하지 않는다.
b - a 가 음수라면, 자리 교환을 한다. 👉앞번호가 뒷번호보다 작으면, 자리 교환을 한다.
👉 내림 차순 정렬을 보장한다.
3. 정답 코드
function solution(numbers) {
var answer = '';
// 두 수를 앞 뒤로 붙여서 내림차순 정렬함
numbers.sort((a, b)=> ("" + b + a ) - ("" + a + b))
answer = numbers.join("")
return answer[0] === "0"? "0": answer;
}
주의할 점
[0,0] 인 경우 그대로 이어붙이면 "00" 이 된다.
이 값을 "0" 으로 만들어 주는 작업을 거쳐야한다.
'Algorithm' 카테고리의 다른 글
[Javascript] 소수 찾기 (2) | 2025.01.21 |
---|---|
[Javascript] 더 맵게 (0) | 2025.01.11 |
[Javascript] 롤케이크 자르기 (1) | 2025.01.11 |
순열, 조합 문제 풀이 (with. Python) (3) | 2024.12.13 |
백준 21315. 카드 섞기 (1) | 2024.12.07 |