문제 : https://www.acmicpc.net/problem/2751
전체 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
// 빠른 입력
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
for(int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(br.readLine());
}
// O(N log N) 정렬
Arrays.sort(arr);
// 빠른 출력
StringBuilder sb = new StringBuilder();
for(int num : arr) {
sb.append(num).append("\n");
}
System.out.print(sb);
}
}
코드 설명
입력
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
- BufferedReader는 Scanner보다 훨씬 빠른 입력 방식이다.
- readLine()으로 한 줄을 읽고, Integer.parseInt()로 숫자로 변환한다.
정렬
Arrays.sort(arr);
- Java의 기본 정렬 알고리즘은 Dual-Pivot QuickSort (Primitive type 기준)로 시간 복잡도 O(N log N)
출력
StringBuilder sb = new StringBuilder();
for(int num : arr) {
sb.append(num).append("\n");
}
System.out.print(sb);
- System.out.println을 N번 호출하면 시간 초과가 날 수 있으므로 StringBuilder로 모든 결과를 한 번에 출력한다.
시간 복잡도
- 입력: O(N)
- 정렬: O(N log N)
- 출력: O(N)
- 총 시간 복잡도: O(N log N)
'코딩테스트 > 백준' 카테고리의 다른 글
| 백준 1018번 - 체스판 다시 칠하기 (1) | 2025.07.01 |
|---|---|
| 백준 9019번 - DSLR (Java, BFS 풀이) (0) | 2025.06.27 |
| 백준 2812번 - 크게 만들기 (Java, Deque + 그리디) (0) | 2025.06.26 |
| 백준 14889번 스타트와 링크 - DFS, 백트래킹 (1) | 2025.06.25 |
| 백준 2609번 최대공약수와 최소공배수 (0) | 2025.06.22 |