728x90
반응형
[가장 큰 수] 라는 정렬 알고리즘 문제를 풀다가 접했다.
직접 정렬을 하는 방식으로 풀려고 했지만 시간 초과가 계속 발생했다.
문제의 해결책은 compareTo 라는 함수를 사용하는 방식.
+ 이어진 두 수의 크기를 비교하는 방법이 핵심아이디어이다.
🍺 java.util.Comparator 클래스에 있는 하위 메서드 compareTo 이다.
// 문자형(대소문자구분)
StrA.compareTo(StrB);
A != B -> return 다른 문자 개수;
동일한 문자로 시작 하지 않을 경우 + 중간은 같은 문자일 경우.
각각의 문자열에서 가장 낮은 아스키 코드이 차이값 리턴.
A != B -> return 아스키 코드의 차이값;
// int 형
A.compareTo(B);
A == B -> return 0;
A > B -> return 1;
A < B -> return -1;
compareTo 를 활용한 가장 큰 수 풀이이다.
public static String solution(int[] numbers) {
String[] str = new String[numbers.length];
for (int i=0; i<numbers.length; i++) {
str[i] = String.valueOf(numbers[i]);
}
Arrays.sort(str, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return (o2+o1).compareTo(o1+o2);
}
});
StringBuffer sb = new StringBuffer();
for (int i=0; i<str.length; i++) {
sb.append(str[i]);
}
// 정렬 이후에도 0일 경우.
if (str[0].equals("0"))
return "0";
return sb.toString();
}
320x100
반응형
'JAVA' 카테고리의 다른 글
[JAVA] JSP와 서버사이드렌더링(SSR) (0) | 2023.04.19 |
---|---|
[Java] TDD와 예제와 연습 , querydsl 슬라이싱 테스트 설정 (0) | 2023.02.25 |
[JAVA] Gabage Collection (0) | 2022.12.13 |
java directory copy / progress bar (0) | 2022.06.11 |
springboot / querydsl 설정 (0) | 2022.05.31 |