static int max_num=-1000;
public static void Max(int num)
{
if(max_num<num)
max_num=num;
}
static int change_number(int[] arr, int r) {
StringBuilder result = new StringBuilder();
result.append(0);
for(int i = 0; i < r; i++)
result.append(arr[i]);
return Integer.parseInt(result.toString());
}
static void per(int[] arr, int[] output, boolean[] visited, int depth, int n, int r) {
if(depth == r) {
Max(change_number(output, depth));
return;
}
for(int i = 0; i < n; i++) {
if(visited[i] != true) {
visited[i] = true;
output[depth] = arr[i];
per(arr, output, visited, depth + 1, n, r);
visited[i] = false;
}
}
}
public static void main(String[] args) throws NumberFormatException, IOException {
int[] numbers = {40, 404};
int n = numbers.length;
int[] output = new int[n];
boolean[] visited = new boolean[n];
per(numbers, output, visited, 0, n, n);
System.out.println(Integer.toString(max_num));
}
----> 런타임에러
// 숫자를 문자열로 변환
String[] result = new String[numbers.length];
for (int i = 0; i < numbers.length; i++) {
result[i] = String.valueOf(numbers[i]);
}
// 정렬
Arrays.sort(result, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
System.out.println(o1+"::"+o2);
for(int i=0;i<result.length;i++)
{
System.out.print(result[i]+" ");
}
System.out.println();
return ((o2 + o1).compareTo(o1 + o2));
}
});
// 0만 여러개 있는 배열의 경우 하나의 0만 리턴
if (result[0].equals("0")) {
//return "0";
}
String answer = "";
// 정렬된 문자 하나로 합치기
for (String a : result) {
answer += a;
}