문제를 풀어보니 앞선 수 정렬 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();
}
}
'java' 카테고리의 다른 글
백준 1181 단어 정렬 (1) | 2024.01.22 |
---|---|
백준 11650 좌표 정렬하기 자바 java (0) | 2024.01.18 |
백준 1436 영화감독 숲 자바 java (0) | 2024.01.16 |
백준 19532 수학은 비대면강의입니다. 자바 java (0) | 2024.01.16 |
백준 2231 분해합 java 자바 (0) | 2024.01.16 |