백준 1427번

문제에서 N 의 범위는 1 ≤ N ≤ 1,000,000,000

언뜻보면 매우 큰 숫자같으나, 각 자릿수를 내림차순으로 정렬하는 문제이기에 1,000,000,000의 자릿수는 10 ⇒ 시간복잡도 (10 * 10)

  1. 나머지 연산으로 분리 or’

  2. 입력값을 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]);
		}
	}
}