# BOJ10989 수 정렬하기 3

https://www.acmicpc.net/problem/10989 (opens new window)

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬한다.

WARNING

N의 범위는 1 ~ 10,000,000이다.

# 제출 코드

Arrays 유틸 클래스안에 sort 메소드로 해결하였다. 한 가지 더 고려해야 할 점은 N은 최대 10,000,000개가 입력될 수 있기 때문에 BufferedReader를 활용하여 입력을 처리하였다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class BOJ10989 {

    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(bufferedReader.readLine());
        int[] numbers = new int[n];

        for (int i = 0; i < n; i++) {
            numbers[i] = Integer.parseInt(bufferedReader.readLine());
        }

        Arrays.sort(numbers);

        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < n; i++) {
            stringBuilder.append(numbers[i]).append("\n");
        }
        System.out.println(stringBuilder);
    }
}

# counting sort

또한 위 문제는 counting sort로도 해결이 가능하다. 수의 범위는 10,000보다 작거나 같은 자연수 이므로 count를 위한 배열을 활용하여 해결하였다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BOJ10989 {

    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(bufferedReader.readLine());
        int[] count = new int[10_001];

        for (int i = 0; i < n; i++) {
            count[Integer.parseInt(bufferedReader.readLine())]++;
        }

        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < count.length; i++) {
            for (int j = 0; j < count[i]; j++) {
                stringBuilder.append(i).append("\n");
            }
        }
        System.out.println(stringBuilder);
    }
}
#algorithm #BOJ #정렬
last updated: 10/10/2021, 6:09:25 PM