/*#include <stdio.h>
typedef struct
{
char s[101];
int a,d;
}asd;
int main()
{
asd arr[1001],temp;
int n,i,j,str=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%s %d",arr[i].s,&arr[i].d);
arr[i].a=i;
}
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(arr[j].d<arr[j+1].d)
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
printf("%s",arr[3].s);
return 0;
}*/
/*#include <stdio.h>
typedef struct
{
char a[11];
int s;
}asd;
int main()
{
asd arr[1001],temp;
int n,m,i,j,str=0;
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%s %d",arr[i].a,&arr[i].s);
}
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(arr[j].s<arr[j+1].s)
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for (i=1;i<=m;i++)
{
printf("%s\n",arr[i].a);
}
return 0;
}*/
/*#include <stdio.h>
typedef struct
{
int a,s,d;
}asd;
int main()
{
asd arr[1001],temp,temq;
int n,i,j,str=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d %d",&arr[i].s,&arr[i].d);
arr[i].a=i;
}
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(arr[j].s<arr[j+1].s)
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
else if(arr[j].s==arr[j+1].s)
{
if(arr[j].d<arr[j+1].d)
{
temq=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temq;
}
}
}
}
for (i=1;i<=n;i++)
{
printf("%d %d %d\n",arr[i].a,arr[i].s,arr[i].d);
}
return 0;
}
데이터 값의 범위 : 0 ~ 100,000
메모이제이션
arr[i] : i번째 입력된 데이터
arr[i] : i가 불린 횟수
10만칸
arr[0] ~ arr[100000]
1 1 2 1 4 4 10 4 5 1 7 5 1 3 ...
1이 10번
2가 5번
3이 1번
4가 7번
...
k가 입력되면 arr[k] ++;
k를 arr[k]번 출력
*/
#include <stdio.h>
int main()
{
int a[100000]={};
int s,n,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&s);
a[s]++;
}
// a[k] : k가 몇개 있는지?
for(i=0;i<=100000;i++)
{
for(j=0;j<=n-i;j++)
{
printf("%d ",i);
}
}
}
/*
a[6] : 6이 몇 번 입력되었는지?
0 ~ 10000
0을 a[0]번 출력
1을 a[1]번 출력
2를 a[2]번 출력
...
10만을 a[10만]번 출력
a[2] 1
a[3] 0
a[4] 1
a[5] 0
a[6] 2
a[7] 0
a[8] 1
...
a[10만] 0
for(i=0;i<=100000;i++)
{
// a[i]번 (i를 출력)
for(j=)
{
printf("%d ",i);
}
}
#include <stdio.h>
int main()
{
int a[24]={};
int s,n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&s);
a[s]++;
}
for(i=1;i<=23;i++)
{
printf("%d ",a[i]);
}
return 0;
}*/