[白俊解答]2751番ソート2(with.JAVA)


白駿2751号へ

2750ソート題と同じタイプの問題です.
タイプは同じですが、入力値の範囲は異なります.
  • 2750回(数字順)→N(1≦N≦1000)、|並べ替え可能|≦1000
  • 2751回(ソート2)→N(1≦N≦1000000),|ソート可能|≦10000
  • 2751問の範囲は2750問より1000倍増えた.だから2750号で使ったArrays今回の問題でsort()が使用されている場合、タイムアウトが発生します.だからアレスはCollectionsはsort()ではありません.sort()を使用する必要があります.
    (Collections.sort()のArray.sort()と一緒に他の投稿を作成した後、リンクを追加する必要があります.)
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.Collections;
    
    public class P2751 {
    
    	// 2750번 문제와의 차이 -> 데이터와 수의 범위 증가 
    	public static void main(String[] args) throws IOException {
    
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    		StringBuilder sb = new StringBuilder();
    		
    		int n = Integer.parseInt(br.readLine());
    		ArrayList<Integer> arr = new ArrayList<>();
    		
    		for(int i = 0; i < n; i++)
    			arr.add(Integer.parseInt(br.readLine()));
    		
    		// Arrays.sort(arr); 의 최악 시간 복잡도는 O(n^2)
    		// 되도록 O(n)에 가깝게 정렬하기 위해 Collections.sort(arr); 사용
    		Collections.sort(arr);
    		
    		for(int a : arr)
    			sb.append(a).append('\n');
    		
    		System.out.println(sb);
    	}
    
    }