temp_num[i][0]에 numbers의 각 숫자들을 전부 4자리로 만들어 저장한다.
이때, numbers의 숫자들이 반복되어 나오는 형식으로 변경한다.
(EX.
[6, 10, 2] -> [6666, 1010, 2222]
[3, 30, 34, 5, 9] -> [3333, 3030, 3434, 5555, 9999]
)
temp_num[i][1]에는 해당 값들에 index를 저장한다.
temp_num을 temp_num[i][0]에 따라 오름차순으로 정렬한다.
마지막 temp_num의 값부터 string으로 바꿔 answer에 저장한다.
이때, numbers = [0, 0, 0, 0]인 경우, answer = "0000"가 되기때문에
처음이 0이면 answer = "0" 으로 하고 반복을 중단한다.
import java.util.*;
import java.util.Arrays;
class Solution {
public String solution(int[] numbers) {
String answer = "";
int[][] temp_num = new int[numbers.length][2];
for(int i = 0 ; i < numbers.length ; i++){
if(0 <= numbers[i] && numbers[i] < 10){
temp_num[i][0] = numbers[i] *1000 + numbers[i] *100
+numbers[i] *10 + numbers[i];
temp_num[i][1] = i;
}
else if(10 <= numbers[i] && numbers[i] < 100){
temp_num[i][0] = numbers[i] * 100 + numbers[i];
temp_num[i][1] = i;
}
else if(100 <= numbers[i] && numbers[i] < 1000){
int n = numbers[i] / 100;
temp_num[i][0] = numbers[i] * 10 + n;
temp_num[i][1] = i;
}
else if(1000 <= numbers[i] && numbers[i] < 10000){
temp_num[i][0] = numbers[i] / 10;
temp_num[i][1] = i;
}
}
Arrays.sort(temp_num,Comparator.comparingInt(o1 -> o1[0]));
for(int i = temp_num.length-1 ; i >= 0 ; i--){
//System.out.println(temp_num[i][0]+" "+temp_num[i][1]);
if(i == temp_num.length-1 && temp_num[i][0] == 0){
answer = "0";
break;
}
String str = Integer.toString(numbers[temp_num[i][1]]);
answer += str;
}
//System.out.println(answer);
return answer;
}
}