배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.
첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.
첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.
N을 한 자리씩 쪼개서 정렬한다. 예를 들어, N=123일 때, 1, 2, 3을 정렬하면 된다.
이를 위해서 N을 문자열로 바꾸는 방법을 이용한다.
Integer number = sc.nextInt();
String str = number.toString();
Integer.parseInt(str.substring(i,i+1))
List<Integer> list = new ArrayList<>();
for(int i=0; i<str.length(); i++){
list.add(Integer.parseInt(str.substring(i,i+1)));
}
list.sort(Comparator.naturalOrder());
for(int i=0; i<list.size(); i++){
answer += (int)(list.get(i)*Math.pow(10, i));
}
Math.pow(double a, double b)
a의 b제곱을 double 형으로 반환한다.
리스트를 내림차순으로 정렬하면, 10의 거듭제곱을 곱할 때 Math.pow(10, list.size()-i-1)
로 작성하면 된다.
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
Integer number = sc.nextInt();
String str = number.toString();
Integer answer = 0;
List<Integer> list = new ArrayList<>();
for(int i=0; i<str.length(); i++){
list.add(Integer.parseInt(str.substring(i,i+1)));
}
list.sort(Comparator.naturalOrder());
for(int i=0; i<list.size(); i++){
answer += (int)(list.get(i)*Math.pow(10, i));
}
System.out.println(answer);
}
}