728x90
반응형
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
|
import java.util.Arrays;
import java.util.Comparator;
class Solution {
public String solution(int[] numbers) {
String answer = "";
int len = numbers.length;
String[] arr = new String[len];
for (int i = 0; i < len; i++) {
arr[i] = Integer.toString(numbers[i]);
}
// 숫자를 문자열로 만들어서 앞뒤로 붙여보면 됨
// "6""10" 이 큰지 "10""6"이 큰지
Arrays.sort(arr, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return ((o2 + o1).compareTo(o1 + o2));
// 오름차순이면 o1.compareTo(o2)
}
});
// 0이 여러개 있는 경우
if (arr[0].equals("0")) {
return "0";
}
for (String s : arr) {
answer += s;
}
return answer;
}
}
|
cs |
comparator를 써야 겠다는 생각은 했는데 문자열을 앞뒤로 붙여보면서 두 객체를 비교하는 방법은 정말 천재적인것 같다..ㅎ
comparator 안을 보면 compareTo 함수와 compare 함수가 있는 것을 볼 수 있는데 둘다 문자열을 비교해서 int형으로 리턴한다.
도움을 받은 천재적인 분의 글
https://ivory-room.tistory.com/43
728x90
반응형
'알고리즘 > 정렬' 카테고리의 다른 글
[java 백준] 골드 4/ 1715번 카드 정렬하기 (0) | 2022.08.03 |
---|---|
[java 백준] 실버 5/ 1181번 단어정렬 (0) | 2022.04.22 |
[ C++백준] 실버 5/1181번 단어정렬 (0) | 2022.02.18 |
[java 백준] 실버 5/ 11004번 K번째 수 (0) | 2021.08.19 |
[java 백준]실버 4/ 11652번 카드 (0) | 2021.08.19 |
댓글