-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSortMaximumNum.java
More file actions
71 lines (69 loc) · 2.66 KB
/
Copy pathSortMaximumNum.java
File metadata and controls
71 lines (69 loc) · 2.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package sort;
import java.util.Arrays;
import java.util.Comparator;
/*
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고,
이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때,
순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
제한 사항
numbers의 길이는 1 이상 100,000 이하입니다.
numbers의 원소는 0 이상 1,000 이하입니다.
정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
입출력 예
numbers return
[6, 10, 2] 6210
[3, 30, 34, 5, 9] 9534330 */
public class SortMaximumNum {
public static void main(String[] args) {
SolutionSortMaximumNum su = new SolutionSortMaximumNum();
// int[] numbers = {6, 10, 2};
int[] numbers = {3, 30, 34, 5, 9};
System.out.println(su.solution(numbers));
}
}
//class MyComp implements Comparator<String> {
// @Override
// public int compare(String o1, String o2) {
// return (o2+o1).compareTo(o1+o2);
// }
//}
class SolutionSortMaximumNum {
public String solution(int[] numbers) {
String answer = "";
String[] array = new String[numbers.length];
for(int i=0; i<numbers.length; i++)
array[i] = Integer.toString(numbers[i]);
// Arrays.sort(array, new MyComp());
// 또는 익명함수 선언으로 해당 메소드를 바로 사용하는 방법
Arrays.sort(array, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if(Integer.parseInt(o1+o2) < Integer.parseInt(o2+o1)) {
return 1;
} else if(Integer.parseInt(o1+o2) > Integer.parseInt(o2+o1)) {
return -1;
} else {
return 0;
}
}
});
if(array[0].equals("0")) {
answer += "0";
} else {
for(int i=0; i<array.length; i++)
answer += array[i];
}
return answer;
/*
* HashMap<Integer, Integer> hs = new HashMap<>(); int[] array = new
* int[numbers.length]; for(int i=0; i<numbers.length; i++) { array[i] =
* numbers[i] % 10; hs.put(array[i], numbers[i]); } for(int i=0;
* i<numbers.length-1; i++) { for(int j=i+1; j<numbers.length; j++) {
* if(array[i] < array[j]) { int tmp = array[i]; array[i] = array[j]; array[j] =
* tmp; } } } for(int i=0; i<numbers.length; i++) { numbers[i] =
* hs.get(array[i]); } for(int data : numbers) answer += data;
*/
}
}