백준
[백준] 10989 수 정렬하기 3
Raming
2025. 2. 12. 21:15
- 문제 이해
- 주어진 n개의 수를 오름차순으로 정렬하여 출력하는 문제이다.
- 코드
package CLASS2;
import java.util.Arrays; import java.util.Scanner;
public class 수정렬하기3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // 숫자의 개수 입력
int[] num = new int[n]; // 입력 숫자를 저장할 배열
for (int i = 0; i < n; i++) {
num[i] = sc.nextInt(); // 숫자 입력받기
}
Arrays.sort(num); // 오름차순 정렬
for (int i = 0; i < n; i++) {
System.out.println(num[i]); // 정렬된 숫자 출력
}
sc.close();
}
}
|
- 속도가 향상된 코드
package CLASS2;
import java.io.*;
import java.util.Arrays;
public class 수정렬하기3 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine()); // 숫자의 개수 입력
int[] num = new int[n]; // 입력 숫자를 저장할 배열
for (int i = 0; i < n; i++) {
num[i] = Integer.parseInt(br.readLine()); // 숫자 입력받기
}
Arrays.sort(num); // 오름차순 정렬
for (int i = 0; i < n; i++) {
bw.write(num[i] + "\n"); // 정렬된 숫자 출력
}
br.close();
bw.flush();
bw.close();
}
}
|
- 비교
비교 항목 | Counting Sort(O(N)) | Arrays.sort(O(N log N)) |
시간 복잡도 | O(N) -> 빠름 | O(N log N) -> 느림 |
메모리 사용 | 10,000 크기의 배열 사용 | N 크기의 배열 사용 |
입출력 속도 | BufferedReader + BufferedWriter 사용 | Scanner + System.out.println() 사용 가능 |
적합한 경우 | 데이터 범위가 제한적일 때 (1~10,000) | 데이터 크기가 상대적으로 작을 때 |
코드 난이도 | 조금 복잡함 | 간단함 (내장 함수) |