No sweet without sweat

[백준 10989 자바/JAVA] 수 정렬하기 3 (Counting Sort) 본문

백준

[백준 10989 자바/JAVA] 수 정렬하기 3 (Counting Sort)

Remi 2023. 2. 27. 22:54
728x90
반응형

문제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

입력

첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

출력

첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

 

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

public class 수_정렬하기3 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int num = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        int[] cnt = new int[10001];

        for (int i = 0; i < num; i++) {
            cnt[Integer.parseInt(br.readLine())]++;
        }

        for (int i = 1; i < 10001; i++) {
            while (cnt[i] > 0) {
                sb.append(i).append("\n");
                cnt[i]--;
            }
        }
        System.out.println(sb);

    }
}

https://www.acmicpc.net/problem/10989

 

10989번: 수 정렬하기 3

첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

www.acmicpc.net

카운팅 정렬은 시간 복잡도가 O(n)으로 엄청난 성능을 자랑함.

 

Counting Sort는 입력되는 수의 개수는 적지만, 수의 범위가 매우 클 경우 심한 메모리 낭비와 Integer.AMX_VALUE 미만으로 가능하기에 실생활에서는 거의 사용 X

 

 

 

 

728x90
반응형

'백준' 카테고리의 다른 글

[백준 10872 자바/JAVA] 팩토리  (0) 2023.03.01
[백준 2108 자바/JAVA] 통계학  (0) 2023.02.28
[백준 25305 자바/JAVA] 커트라  (0) 2023.02.26
[백준 2751 자바/JAVA] 수 정렬하기 2  (0) 2023.02.25
[백준 2292 자바/JAVA] 벌집  (0) 2023.02.24
Comments