import java.util.*;
class Solution {
public String solution(int[] numbers) {
String[] arr = new String[numbers.length];
// String으로 변환해서 배열에 넣기
for(int i = 0; i < arr.length; i++) {
arr[i] = String.valueOf(numbers[i]);
}
// compareTo() -> 두 개의 문자열을 비교하여 아래와 같은 값을 반환
// 반환 값이 음수: 첫 번째 문자열이 두 번째 문자열보다 사전적으로 앞에 위치함
// 반환 값이 양수: 첫 번째 문자열이 두 번째 문자열보다 사전적으로 뒤에 위치함
// 반환 값이 0: 두 문자열이 동일한 순서를 가지고 있음
// ex) a = "10", b = "6"
// (b + a) = "610"
// (a + b) = "106"
// "610".compareTo("106") -> 양수가 반환되므로 정렬 순서는 b가 a보다 앞에 위치
Arrays.sort(arr, (a, b) -> (b + a).compareTo(a + b));
// StringBuilder는 문자열을 추가하거나 삭제하는데 효율적
// 문자열을 그냥 더하는 것보다 훨씬 빠름
StringBuilder sb = new StringBuilder();
for (String a : arr) {
sb.append(a);
}
// 0으로 시작하는 경우 예외 처리
if (sb.charAt(0) == '0') {
return "0";
}
return sb.toString();
}
}