
문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
n은 1이상 8000000000 이하인 자연수입니다.
입출력 예
| n | return |
|---|---|
| 118372 | 873211 |
import java.util.*;
import java.util.stream.*;
class Solution {
public long solution(long n) {
return Long.parseLong(Arrays.stream(String.valueOf(n).split("")).sorted(Comparator.reverseOrder()).collect(Collectors.joining()));
}
}
n 을 String 형으로 변환한 후, Arrays.stream()을 사용해서 배열로 변경해준다.
stream의 sorted() 함수를 사용하여 정렬을 진행하는데, 기본은 오름차순이라 내림차순으로 정렬하기 위해 Comparator 를 사용했다.
Comparator.reverseOrder() Comparator.reverseOrder() : 복잡한 정렬 기준 또는 비교할 수 없는 개체를 처리할 때 사용
Collections.reverseOrder() : 요소 자체가 '비교 가능'하고, 간단한 컬렉션일때 사용
정렬한 후에 다시 문자들들을 합치기 위해 Collectors.joining() 메서드를 사용했다.
Collectors.joining() long 타입으로 return 하기 위해 Long.parseLong()을 사용했다.
처음에 String 형으로 변환하지 않고, int 형 그대로 정렬을 해보려고 시도했지만 정렬이 진행되지 않았다