문제에서 N 의 범위는 1 ≤ N ≤ 1,000,000,000
언뜻보면 매우 큰 숫자같으나, 각 자릿수를 내림차순으로 정렬하는 문제이기에 1,000,000,000의 자릿수는 10 ⇒ 시간복잡도 (10 * 10)
나머지 연산으로 분리 or’
입력값을 String 으로 받은 후 sustring()함수 이용하여 분리
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String stringNum = sc.nextLine();
int[] nums = new int[stringNum.length()];
for(int i = 0; i < stringNum.length(); i++) {
nums[i] = Integer.parseInt(stringNum.substring(i, i + 1));
}
for(int i = 0; i < stringNum.length(); i++) {
// i 번째 자리는 확정된 자리, 나머지는 미정리 영
int max = i;
for(int j = i +1; j < stringNum.length(); j++) {
if(nums[j] > nums[max]) {
max = j;
}
}
if(nums[i] < nums[max]) {
// i 위치에 있어야할 값(최대값) - nums[max]
// 지금 i 위치에 있는 값 - nums[i]
// i 위치에 최댓값이 없으니 교환 필
int temp = nums[i];
nums[i] = nums[max];
nums[max] = temp;
}
}
for(int i = 0; i < stringNum.length(); i++) {
System.out.print(nums[i]);
}
}
}