Arrays.sort를 정수 n을 valueOf메서드를 이용하여 문자열로 변환하여 문자열 배열에 담습니다.
이때, 값을 하나씩 비교해야 하기 때문에 split() 메서드를 이용하여 문자를 하나씩 쪼개서 값을 담습니다.
이 값을 Arrays.sort() 메서드를 이용하여 문자열 배열에 담은 값들을 오름차순 정렬합니다.
문자열을 더해주는 StringBuilder를 사용하기 위해 객체를 생성하고
문자열 배열 0번째 인덱스부터 마지막까지 append 메서드를 이용하여 하나씩 합칩니다.
마지막으로 reverse 메서드를 이용하여 내림차순으로 변경하고 toString() 메서드를 이용해 문자열로 변환합니다.
리턴해야 하는 값은 long 타입이기 때문에 Long.parseLong을 이용하여 문자열을 long 타입으로 형변환을 해줍니다.
package com.namji.codingtest.level0;
import java.util.Arrays;
import java.util.Collection;
public class Sort_by_Integer_in_DescendingOrder {
public static void main(String[] args) {
/*
* 정수 n이 매개변수로 주어집니다.
* n의 각 자릿수를 큰 수부터 작은 수로 정렬한 값을 출력하는 문제입니다.
* 118372 > 873211
*/
long n = 118372;
String[] str = String.valueOf(n).split("");
Arrays.sort(str);
StringBuilder sb = new StringBuilder();
for (String strList : str) {
sb.append(strList);
}
System.out.println(Long.parseLong(sb.reverse().toString()));
}
}
프로그래머스 코드
import java.util.*;
class Solution {
public long solution(long n) {
String[] str = String.valueOf(n).split("");
Arrays.sort(str);
StringBuilder sb = new StringBuilder();
for (String strList : str) {
sb.append(strList);
}
return Long.parseLong(sb.reverse().toString());
}
}