public String solution(int[] numbers) {
String answer = "";
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) {
return ((o2 + o1).compareTo(o1 + o2));
}
});
//0만 있을 경우 [0,0,0,0] 0을 리턴
if(result[0].equals("0")) {
return "0";
}
for(int i = 0; i < result.length; i++) {
answer += result[i];
}
return answer;
}
comparator에 대해 공부 할 수 있는 시간 이었다.
어려운 문제였다!.
오름차순 : (o2+o1).compareTo(o1+o2)
내림차순 : (o1+o2).compareTo(o2+o1)
ex) 5와 9 비교시..
("9"+"5").compareTo("5"+"9")
95.compareTo(59)
Comparable을 implement한 뒤, compareTo 메소드를 구현한다.
Comparable을 implement하지 않고도 오브젝트의 특정변수를 기준으로 정렬하는 방법이 있는데, 그게 바로 Comparator이다!
: 문자열의 사전순 값을 비교하여 그에 해당되는 int 값을 리턴한다.
A , B를 비교할 경우
A = B : 0을 리턴
A > B : 1을 리턴
A < B : -1을 리턴
: Comparator 인터페이스를 구현할 때 작성해야하는 메서드 이다.
2개의 인자를 넘겨 내부의 구현에 따라 int값 리턴.
Collections.sort(list, new Comparator<String>(){
@Override
public int compare(String o1, String o1){
if(o1 > o2) {return 1;}
else if( o1 < o2 ) { return 1;}
else {return 0;}
})