수 정렬하기 3 [10989번]

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

입력

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

출력

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

생각해볼점

배열 num_arr[10001]에 10000까지의 수들이 각각 몇 번 나오는지를 저장한 후, 앞에서부터 순서대로 각 수가 나온 횟수만큼 출력한다.

코드 구현

#include <stdio.h>

int main()
{
	int	num, num_arr[10001] = {0, }, temp, idx, idx2;

	scanf("%d", &num);

	idx = -1;
	while (++idx < num)
	{
		scanf("%d", &temp);
		num_arr[temp]++;
	}

	idx = -1;
	while (++idx <= 10000)
	{
		idx2 = -1;
		while (++idx2 < num_arr[idx])
			printf("%d\n", idx);
	}

	return (0);
}