
String.valueOf()).(b+a).compareTo(a+b)로 내림차순 정렬:replaceFirst("^0+", "")).isEmpty() 체크 → "0" 반환).즉, "문자열 변환 → 특별정렬 → 결합 → 후처리" 완벽 흐름!
(b+a).compareTo(a+b) 사용 이유숫자 비교 X : "34" > "30" → 잘못된 순서
문자열 붙이기 비교 O : "34"+"30"="3430" > "30"+"34"="3034"
핵심 원리: 정렬의 추이법칙 활용
A > B, B > C → A > C (전체 순서 자동 도출)
O(N log N)으로 N! 순열 탐색 대체!
주요 메서드:
String.valueOf(): 숫자→문자열Arrays.sort(comparator): 특별 비교 정렬replaceFirst("^0+", ""): 선행 0 제거
이 때 문자열 붙이기까지 작성한 코드를 제출 시, 테스트11에서 실패를 하였는데, 0이 선행되는 경우 전부 제거해주고, 빈 배열 처리를 해줘야하기 때문에 각각의 처리를 이행해야함(제출 코드 내 ✅ 부분 확인)
import java.util.Arrays;
class Solution {
public String solution(int[] numbers) {
String answer = "";
String[] str_nums = new String[numbers.length];
for (int i = 0; i < numbers.length; i++) {
str_nums[i] = String.valueOf(numbers[i]);
}
Arrays.sort(str_nums, (a, b) -> (b + a).compareTo(a + b));
StringBuilder sb = new StringBuilder();
for (String s : str_nums) {
sb.append(s);
}
answer = sb.toString();
answer = answer.replaceFirst("^0+", ""); // ✅ 선행 0 처리
return answer.isEmpty() ? "0" : answer; // ✅ 빈 배열 처리
}
}