매개변수로 받은 정수를 내림차순으로 정렬하여 다시 출력하는 프로그램
import java.util.*;
class Solution {
public long solution(long n) {
long answer = 0;
String result = null; //정렬된 배열을 다시 받아줄 String
String number = Long.toString(n); // 매개변수 n을 정렬하기 위해 String으로 변환
Integer[] array = new Integer[number.length()];
// String 으로 바뀐 매개변수 n을 정렬시켜줄 배열 선언
for (int i = 0; i < number.length(); i++) {
String indexNumber = number.substring(i, i+1);
array[i] = Integer.parseInt(indexNumber);
} // 배열에 String으로 바뀐 매개변수 n을 자릿수별로 분류해서 삽입
Arrays.sort(array, Collections.reverseOrder()); //배열을 내림차순 정렬
result = Integer.toString(array[0]);
for (int j = 1; j < array.length; j++) {
result += Integer.toString(array[j]);
} //정렬된 배열을 다시 String으로 변환
answer = Long.parseLong(result); //결과값 String을 Long으로 변환
return answer;
}
}
주어진 정수 n을 내림차순으로 정렬하기 위해서 자릿수 별로 나누어 배열로 변환,
배열을 Arrays.sort를 이용하여 내림차순 정렬
그 후 내림차순 정렬된 배열 → String → Long 으로 변환하여 return
Array.sort 를 사용하기 위해 import java.util.*; 사용 ( 원래는 *이 아니라 Collection , Arrays )
JAVA 배열 정렬 종류
배열 오름차순 정렬 | Arrays.sort(arr) |
배열 내림차순 정렬 | Arrays.sort(arr, Collections.reverseOrder()) |
배열 일부분만 오름차순 정렬 | Arrays.sort(arr, 시작 index, 정렬할 마지막 index + 1) |
객체로 이루어진 배열을 정렬 할 때에는 Comparable 인터페이스를 사용하여 compareTo() 메소드를 오버라이딩하여 정렬
- compareTo() 메소드의 기본 구성
- 숫자형 비교일 경우
- 기준 값과 비교대상이 동일한 값일 경우 0 반환
- 기준 값이 비교대상 보다 작은 경우 -1 반환
- 기준 값이 비교대상 보다 작은 경우 1 반환
- 문자열 비교일 경우
- 기준 값과 비교대상이 동일한 값일 경우 0 반환
- 기준 값이 비교대상 보다 작은 경우 음수 반환
- 기준 값이 비교대상 보다 작은 경우 양수 반환
- 숫자형 비교일 경우