/*
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
*/
/*
#include <stdio.h>
int main()
{
int arr[1001]={0};
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&arr[i]);
}
for(i=n;i>=1;i--)
{
printf("%d ",arr[i]);
}
return 0;
}
*/
/*
#include <stdio.h>
int main()
{
int n,i,j;
int arr[101]={0};
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&arr[i]);
}
for(j=1;j<=2;j++)
{
for(i=1;i<=n;i++)
{
printf("%d\n",arr[i]);
}
}
return 0;
}
원래 카드가 1 ~10
a b
( 1 ~ n 합 ) - ( n-1개의 합 ) = 빠진 숫자
*/
/*
#include <stdio.h>
int main()
{
int n,i, a=0, b=0;
int arr[51]={0};
scanf("%d",&n);
for(i=1;i<=n-1;i++)
{
scanf("%d",&arr[i]);
a+=i;
b+=arr[i];
}
a+=n;
printf("%d",a-b);
return 0;
}
메모이제이션 memoization
원래 1차원배열의 용도 : arr[i] = i번째 입력된 숫자
메모이제이션에서의 용도 :arr[i] = i에 대한 메모
ex) i가 뽑힌 횟수 , i 입력 여부
한 반에 30명 후보 1, 2, 3번 에게 투표
1번 후보 1
2번 후보 0
3번 후보 1
arr[1] ~ arr[30] (x)
arr[1] arr[2] arr[3]
arr[1] ~ arr[23] : 번호가 불린 횟수
k번호가 불렸따 -> arr[k]++;
*/
#include <stdio.h>
int main()
{
int i,n,a;
int arr[24]={0};
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a);
arr[a]++;
}
for(i=1;i<=23;i++)
{
printf("%d ",arr[i]);
}
return 0;
}