import java.util.*;
class Solution {
public String solution(int[] numbers) {
// int 배열을 String 배열로 변환
String[] strNumbers = new String[numbers.length];
for (int i = 0; i < numbers.length; i++) {
strNumbers[i] = String.valueOf(numbers[i]);
}
Arrays.sort(strNumbers, (s1, s2) -> (s2 + s1).compareTo(s1 + s2));
if (strNumbers[0].equals("0")) {
return "0";
}
StringBuilder sb = new StringBuilder();
for (String str : strNumbers) {
sb.append(str);
}
return sb.toString();
}
}
Arrays.sort(strNumbers, (s1, s2) -> (s2 + s1).compareTo(s1 + s2));
s1 = "3", s2 = "30":
s2 + s1 = "303"
s1 + s2 = "330"
("303").compareTo("330")은 -1을 반환합니다.
👉 즉, "30"이 "3"보다 앞에 위치해야 합니다.
쉽게 말해서 더 큰쪽으로 정렬된다!
(s2 + s1).compareTo(s1 + s2): 더 큰 쪽을 앞에 배치 (내림차순 정렬) 이 문제
(s1 + s2).compareTo(s2 + s1): 더 작은 쪽을 앞에 배치 (오름차순 정렬)