白駿10989号ソート3


以前はソート方法を考えていたときに、それなりの数の配列格に保存する方法を考えましたが、友人が昨日この問題をしたのを見て、この方法でやればいいと思いました.
マイコード
#include <stdio.h>

int main()
{
	int array[10001] = {0};
	int N, i, j, x;
	scanf("%d", &N);
	for (i = 0; i < N; i++)
	{
		scanf("%d", &x);
		array[x]++;
	}
	for (i = 1; i < 10001; i++)
	{
		for (j = 0; j < array[i]; j++)
		{
			printf("%d\n", i);
		}
	}
	return 0;
}
他人のコード
#include <stdio.h>
int main(){
    int N;
    scanf("%d",&N);
    int a[10001]={0};
    for(int i=0;i<N;i++) {int t; scanf("%d",&t); a[t]++;}
    for(int i=0;i<=10000;i++){
        char s[6]={0};
        sprintf(s,"%d",i);//나와 방법이 차이는 없으나 printf보다 빠른 puts를 쓰기 위해 sprintf로 정수를 문자열로 저장하여 문자열로 출력한 것이 다른 점이다.
        
        sprintf는 출력을 하는 대신 문자열에 입력된 것을 저장한다.
        string printf니 사실 stdout에 입력하여 콘솔에 출력하는 대신 문자열에 출력한다고 생각하면 편하다.
        
        사용법 : sprintf(저장할 주소,문자열) 또는 sprintf(저장할 주소, 출력할 포멧, 정수 등등)
        
        for(int j=0;j<a[i];j++) puts(s); 
    }
    return 0;