import java.util.*;
class Solution {
public String solution(int[] numbers) {
String answer = "";
//convert int to string
String[] numStr = new String[numbers.length];
for(int i=0; i<numStr.length; i++){
numStr[i] = Integer.toString(numbers[i]);
}
//lambda funtion
Comparator<String> comp = (o1, o2) -> (o2 + o1).compareTo(o1 + o2);
Arrays.sort(numStr, comp);
// return 0 if array has multiple 0's
if (numStr[0].equals("0")) {
return "0";
}
for (String a : numStr) {
answer += a;
}
return answer;
}
}
*알고리즘: 앞뒤 조합을 비교하여 순서 바꿔가며 내림차순 정렬
int 배열을 string으로 형변환하여 내림차순 정렬까지는 완료 했는데, 그 후 앞자리가 같은 수들 간의 순서를 정하는 데 있어서 애를 먹었다.
https://codevang.tistory.com/294를 참고하여 멋진 아이디어와 코딩 스킬을 습득할 수 있었다.
내림차순 정렬이 완료된 배열을 가지고 람다 함수를 comparator(정렬하는 특별한 기준 마련)로 사용하여 sort함수를 사용하였다.(https://jeong-pro.tistory.com/173 참고)
그랬더니 앞과 뒤 요소를 이어붙여 더 큰 경우의 순서 조합대로 sorting 되도록 할 수 있었다.
그 아래 부분 코드는 예외처리와 answer string 만드는 코드다.