문제풀이
코드
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String[] numberArr = new String[numbers.length];
for (int i=0; i<numbers.length; i++) {
numberArr[i] = Integer.toString(numbers[i]);
}
// Anonymous Object
Arrays.sort(numberArr, new Comparator<String>() {
//override
public int compare(String o1, String o2) {
return (o2+o1).compareTo(o1+o2);
}
});
// Lambda Expression
// Arrays.sort(numberArr, (o1, o2) -> {return (o2+o1).compareTo(o1+o2);});
if (numberArr[0].equals("0")) {
return "0";
}
String answer = "";
for (String s: numberArr) {
answer += s;
}
return answer;
}
}
결과
핵심:
1) 정렬기준 바꾸는 방법:
Arrays.sort ( T [ ], Comparator<T> c ) 메소드 사용
구현1 ) 익명객체 사용
Arrays.sort (T [ ], new Comparator<T>( ) {
@Override
public int compare(T o1, T o2) {
return [정렬의도에 맞게 오버라이딩하여 리턴];
}
} );
구현2 ) 람다 사용
Arrays.sort (T [ ], (o1, o2) -> { return [정렬의도에 맞게 오버라이딩하여 리턴]; } );
2) 예외 Case 고려 !!
대부분의 TC가 맞는데 한두개 틀린거면 전체적인 로직은 맞은것이니 예외 Case 고려해보자.