/*
#include<stdio.h>
int a[100001]= {};
int b[100001] = {0};
int bs(int s, int e, int k)
{
int mid=(s+e)/2;
if(s>e)
return -1;
if(a[mid]==k)
return mid;
else if(a[mid]<k)
bs(mid+1,e,k);
else
bs(s,mid-1,k);
}
void quick_sort(int s, int e)
{
int temp;
int pivot=s;
int low=s,high=e+1;
if(s>=e)
return ;
do
{
do
{
low++;
}
while(a[pivot]>a[low]);
do
{
high--;
}
while(a[pivot]<a[high]);
if(low<high)
{
temp = a[low];
a[low] = a[high];
a[high] = temp;
}
}
while(low<high);
temp = a[pivot];
a[pivot] = a[high];
a[high] = temp;
quick_sort(s,high-1);
quick_sort(high+1,e);
}
int main()
{
int i, n;
scanf("%d", &n);
for(i=1; i<=n; i++)
{
scanf("%d", &a[i]);
b[i] = a[i];
}
quick_sort(1,n);
// printf("\n");
for(i=1; i<=n; i++)
{
printf("%d ",bs(1, n, b[i])-1);
}
}
*/
/*
#include<stdio.h>
int a[100001];
void quick_sort(int s, int e)
{
int temp;
int pivot=s;
int low=s,high=e+1;
if(s>=e)
return ;
do
{
do
{
low++;
}
while(a[pivot]>a[low]);
do
{
high--;
} while(a[pivot]<a[high]);
if(low<high)
{
temp=a[low];
a[low]=a[high];
a[high]=temp;
}
}
while(low<high);
temp=a[pivot];
a[pivot]=a[high];
a[high]=temp;
quick_sort(s,high-1);
quick_sort(high+1,e);
}
int main()
{
int i, j, n;
scanf("%d", &n);
for(i=1; i<=n; i++)
{
scanf("%d", &a[i]);
}
quick_sort(1,n);
for(i=1; i<=n; i++)
{
printf("%d",a[i]);
printf("\n");
}
}
포인터 : 주소
int* pa int변수의 주소를 담는 자료형
*pa pa가 가리키는 곳의 값 ( 간접참조연산자)
#include <stdio.h>
void f(int* pa)
{
//printf("%d\n",pa);
//printf("%d",*pa);
*pa=*pa+5;
}
int main()
{
int a=10;
f(&a);
printf("%d",a);
}
#include <stdio.h>
void myswap(int* a, int* b)
{
int p;
if(*a>*b)
{
p=*a;
*a=*b;
*b=p;
}
}
main()
{
int a, b;
scanf("%d%d", &a, &b);
myswap(&a, &b);
printf("%d %d", a, b);
}
#include <stdio.h>
char* fp(char* a)
{
return a;
//printf("%s",a);
}
main()
{
char str[50];
scanf("%s",str);
fp(str);
//str == &str[0]
//배열의 이름 == 배열의 첫번째 값의 주소
}
#include <stdio.h>
void fp(int* arr,int len)
{
int i;
for(i=0;i<len;i++)
{
printf("%d ",arr[i]);
}
}
main()
{
//char str[50];
//scanf("%s",str);
int arr[5]={1,8,4,3,7};
fp(arr,5); //배열을 함수간에 넘길때는 배열의 시작주소와 길이만 넘겨주면 된다.
//str == &str[0]
//배열의 이름 == 배열의 첫번째 값의 주소
}
*/
/*
char *mysubstr(char *str, int start, int count)
{
str[start+count]=0;
printf("%s", str+start);
}
int main()
{
char str[101];
int s, e;
scanf("%s",str);
scanf("%d %d",&s,&e);
mysubstr(str,s,e);
return 0;
}
*/
/*
#include<stdio.h>
int main()
{
int a[101][101];
int k=1,n,i,j,m;
scanf("%d %d", &n, &m);
for(i=1; i<=n; i++)
{
if(i%2==0)
{
for(j=1; j<=m; j++)
{
a[i][j]=k++;
}
}
else
{
for(j=m; j>=1; j--)
{
a[i][j]=k++;
}
}
}
for(i=n; i>=1; i--)
{
for(j=1; j<=m; j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
}
*/