백준 10989번 수정렬하기3

honeyricecake·2022년 1월 15일
0

백준

목록 보기
7/30

이전에 정렬방법을 생각하다가 그 수에 해당하는 배열칸에 저장하는 방법을 생각했었는데 친구가 어제 이 문제를 푼 걸 보고 아 이 문제를 딱 이 방법으로 풀면 되겠다 싶어서 풀게 되었다.

내 코드

#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;

0개의 댓글