본문 바로가기
java

백준 2751 수 정렬2 자바 java

by MiaCoder 2024. 1. 18.

문제를 풀어보니 앞선 수 정렬 1에서 사용한 방식을 사용하면 시간초과가 뜬다.

 

N의 범위가 1,000,000까지로 늘어났기 때문으로 생각된다.

 

조금이라도 시간을 아끼끼 위해 Scanner보다 BufferReader과 BuffferWriter을 사용하기로 한다.

 

기존에 사용한 정렬방식은 버블정렬이었는데, 이 방식은 선택정렬, 삽입정렬과 함께 큰 수를 정렬할 때는 비효율 적인 방식이다.

(시간복잡도 O(n^2))

 

따라서 Arrays.sort(); 를 사용해보기로 했다.

 

이 방식은 시간복잡도( O(n log n)

이다. 

 

따라서 큰 수에 효율적인 Arrays.sort()를 사용하기로 한다.

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) throws Exception {

        // 배열 A와 숫자 n을 입력받는다.

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(br.readLine());
        int arr[] = new int[N];
        //입력받을 수

        for (int i = 0; i < N; i++) {
            arr[i] = Integer.parseInt(br.readLine());
        }
        //반복문을 통해 배열에 채움

        Arrays.sort(arr);
        //정렬 메소드 사용

        for (int i = 0; i < N; i++) {
            bw.write(arr[i] + "\n");
        }
        //출력

        bw.flush();
        // flush를 해야 출력이 된다.
        bw.close();
        br.close();
    }

}