https://school.programmers.co.kr/learn/courses/30/lessons/42746

numbers 배열을 문자열로 전환해 저장할 수 있는 배열을 하나 만든다.
두 개의 문자열을 합쳐서 더 큰 값이 될 수 있도록 하는 순서로 정렬한다.
예를 들어, o1 = "3", o2 = "30"인 경우, o2 + o1 = "303", o1 + o2 = "330"이므로
"330"이 "303"보다 크기 때문에 o1이 o2 앞에 온다
정렬을 했을 때 첫번째 원소가 0 이면 가장 큰수가 0이라는 뜻 ! -> 0 return
정렬된 수를 문자열로 합쳐 가장 큰 수를 출력한다
** Arrays.sort(arr, (o1, o2) -> (o2 + o1).compareTo(o1 + o2));
-> (o1, o2) -> (o2 + o1).compareTo(o1 + o2) : (o2 + o1)와 (o1 + o2)를 비교해 더 큰 수로
-> .compareTo() : 두 문자열을 사전순(더 큰순)으로 정렬
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String[] arr = new String[numbers.length];
for (int i = 0; i < arr.length; i++) {
arr[i] = String.valueOf(numbers[i]); // numbers 배열을 문자열 배열로 변환
}
// 두 문자열을 합쳐 더 큰 값이 될 수 있도록 하는 순서로 정렬
// 람다
Arrays.sort(arr, (o1, o2) -> (o2 + o1).compareTo(o1 + o2));
// sort 정렬 한 배열의 첫번째 원소가 0 -> 가장 큰수가 0이고 나머지도 다 0 -> 0 return
if (arr[0].equals("0")) {
return "0";
}
StringBuilder sb = new StringBuilder();
// string으로 합치기
for (int i = 0; i < arr.length; i++) {
sb.append(arr[i]);
}
return sb.toString();
}
}