- 두 양의 정수가 서로의 숫자를 재배치해 서로를 얻을 수 있는 조건이면 sibling이라고 한다.
- 예를 들어 123과 321은 sibling, 535와 355도 sibling이다.
- 양의 정수 N의 sibling이 모인 집합을 family라고 한다.
- 예를 들어 553의 family는 355, 535, 553이라고 할 수 있다.
- 주어진 양의 정수 N의 family 중에서 가장 큰 수를 반환하는 함수를 구현해라.
- 예를 들어 N=213이라면 function의 리턴값은 321, N=553이라면 553을 리턴하면 된다.
- 조건
import java.util.*;
class solution {
public int solution(int N) {
String[] nStrArr = Integer.toString(n).split("");
Integer[] arr = new Integer[nStrArr.length];
for (int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(nStrArr[i]);
}
Arrays.sort(arr, Collections.reverseOrder());
StringBuffer sb = new StringBuffer();
for (Integer elm : arr) {
sb.append(elm);
}
return Integer.parseInt(sb.toString());
}
}
- 너무 장황한 것 같아서 잘 생각해 보니 Stream을 쓸 수 있을 것 같아 다시 해봤다.
public int solution(int N) {
return Integer.parseInt(
Stream.of(Integer.toString(N).split(""))
.sorted(Comparator.reverseOrder())
.collect(Collectors.joining()));
}