import java.util.*;
class Solution {
public long solution(long n) {
long answer = 0;
String str = "" + n;
Integer[] arr = new Integer[str.length()];
int index =0;
while(n>0) {
arr[index] = (int) (n%10);
n /= 10;
index++;
}
Arrays.sort(arr, Collections.reverseOrder());
str ="";
for(int i=0; i<arr.length; i++) {
str += arr[i];
}
answer = Long.parseLong(str);
return answer;
}
}
import java.util.*;
class Solution {
public long solution(long n) {
String[] list = String.valueOf(n).split("");
Arrays.sort(list);
StringBuilder sb = new StringBuilder();
for (String aList : list) sb.append(aList);
return Long.parseLong(sb.reverse().toString());
}
}
다양한 메서드를 사용해 한결 간단하게 구현했다.
내림차순으로 정렬하는 Arrays.sort(arr, Collections.reverseOrder());
를 쓰려면 byte, char, double, short, long, int, float같은 PrimitiveType의 배열에는 적용이 불가능하니 Integer같은 Wrapper "Class"를 이용해야한다.
split()를 하면 특정 문자열을 파라미터로 받아서 해당 문자열을 기준으로 문자열을 잘라 문자열 배열로 넣어준다.
reverse() 메소드를 사용하기위해서는, StringBuilder/StringBuffer 클래스를 이용한다. 이 메서드는 문자열을 뒤집어준다.
StringBuilder/StringBuffer를 toString()을 이용해 String으로 바꿔준다.