a[i] : i번째 데이터 (x)
a[i] : i에 대한 메모 ( i라는 숫자가 들어온 횟수)
a[1] 1
a[2] 2
a[3] 0
a[4] 0
a[5] 1
a[6] 0
a[7] 0
a[8] 1
i는 0부터 100000까지
i를 a[i]번 출력
for(i)
{
for(j) // a[i]번 반복
{
i출력
}
}
i=1 1을 1번
i=2 2를 2번
i=3 3을 0번
i=4 4를 0번
i=5 5를 1번
1 2 2 5 8
#include <stdio.h>
//데이터 값의 범위 : 0 ~ 100,000
int a[100001]={};
int n, i, j, temp, key;
int main() {
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
scanf("%d", &temp);
a[temp]++;
}
for(i=1;i<=100001;i++)
{
for (j=1;j<=a[i];i++)
{
printf("%d ",i);
}
}
}
#include<stdio.h>
int i,j,d,b,c,temp;
int a[41];
int main() {
scanf ("%d %d %d",&a[1],&a[2],&a[3]);
for (i=1; i<3; i++) {
for(j=1; j<=3-i; j++) {
if (a[j]>a[j+1]) {
temp =a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printf("%d %d %d",a[1],a[2],a[3]);
}
#include<stdio.h>
int a [101];
int i,j,temp,min,max,sum=0;
int main()
{
for (i=1;i<=5;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
for (i=1;i<=5;i++)
{
min=i;
for (j=i+1;j<=5;j++)
{
if (a[min]>a[j])
{
min=j;
}
}
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
printf("%d\n%d",sum/5,a[3]);
return 0;
}
이진 이분 binary
5 1 2 4 7 89 4 12 3 5 4 1 2 7
배열이 500개 ->250 -> 125 -> 60 ->30->15->7->
1 2 3 4 5 7 8 10 12 15 22 48 89
s mid e
1 7 13
k=15
a[mid] <k -> mid+1 ~ e
*/
/*
#include <stdio.h>
int a[1000001]={};
int bs(int s,int e,int k) // a[s] ~ a[e]에서 k값의 위치 리턴
{
if(s>e) //못찾았으면
{
return -1;
}
int mid = (s+e)/2;
if(a[mid]==k) //1. 가운데가 k값인지?
{
return mid;
}
else if(a[mid]<k)
{
return bs(mid+1,e,k);
}
else
{
return bs(s,mid-1,k);
}
}
int main()
{
int n,k,i;
scanf("%d %d",&n,&k);
for (i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
printf("%d",bs(1,n,k));
return 0;
}
*/
