백준

[백준] 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) 데이터 크기가 상대적으로 작을 때
코드 난이도 조금 복잡함 간단함 (내장 함수)