코딩/백준 문제 (브론즈)

[백준/10989/C언어] 수 정렬하기 3 _ 풀이

룻밤 2023. 9. 11. 19:37

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

 

10989번: 수 정렬하기 3

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

www.acmicpc.net


풀이

#include <stdio.h>
 
int main(void){
    int N;
    scanf("%d", &N);
 
    int counting[10001]={};
     
    for(int i=0; i<N; i++){
        int input;
        scanf("%d", &input);
        // input인덱스의 값 +1 (=인덱스의개수)
        counting[input]++;
    }
    
    for(int i=0; i<10001; i++){
        // counting[i] 횟수만큼 i 출력
        for(int j=0; j<counting[i]; j++){   
            printf("%d\n", i);
        }
    }
}

계수정렬(counting sort)를 통해

각 입력과 같은 수의 인덱스에 그 인덱스의 반복횟수를 저장하는 배열을 만들고

출력시에 반복 횟수만큼 출력 가능하다