728x90
1. 문제
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.제한 조건
- n은 1이상 8000000000 이하인 자연수입니다.
입출력 예
n | return |
118372 | 873211 |
2. 내 풀이
import java.util.*;
class Solution {
public long solution(long n) {
long answer = 0;
if (n < 1 || n > 8000000000L) return -99999L;
List<Long> list = new ArrayList<>();
while (n != 0) {
list.add(n % 10);
n /= 10;
}
Collections.sort(list, Collections.reverseOrder());
Iterator<Long> iterator = list.iterator();
while (iterator.hasNext()) {
answer = answer * 10 + iterator.next();
}
return answer;
}
}
3. 다른 사람 풀이
public class ReverseInt {
String res = "";
public int reverseInt(int n){
res = "";
Integer.toString(n).chars().sorted().forEach(c -> res = Character.valueOf((char)c) + res);
return Integer.parseInt(res);
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args){
ReverseInt ri = new ReverseInt();
System.out.println(ri.reverseInt(118372));
}
}
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());
}
}