준비/알고리즘 공부
[알고리즘] 가장 큰 수
chuseok
2021. 9. 6. 15:37
Comparator 클래스란?
: Comparable이 구현된 클래스들의 기본 정렬 기준과는 다른 방식으로 정렬하고 싶을 때 사용하는 클래스이며, 기본적으로 오른차순이 정렬 기준인 것을 내림차순으로 정렬하는 등의 용도로 사용된다.
private static String solution(int[] numbers) {
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));
}
});
if(result[0].equals("0")) {
return "0"; //배열의 원소가 0값으로만 구성되어 있다면 0을 여러개 반환하므로 하나만 출력될 수 있도록 처리한다.
}
String answer = "";
for (String a : result) {
answer += a;
}
return answer;
}
풀이
1. int 배열을 String 배열로 변환한다.
2. Arrays.sort 내부에 정렬 기준을 (new Comparator<>)익명클래스를 사용하여 구현한다.
추가
StringBuilder sb = new StringBuilder();
for(Integer i : list) {
sb.append(i);
}
: 문자열을 합칠 때 String객체를 더하는 행위는 메모리 할당과 메모리 해제를 발생시켜 연산이 많아지면서 성능적으로 좋지 않다. 그러므로 기존의 데이터에 더하는 방식인 StringBuiler를 사용하는 것이 좋다.