/*#include <stdio.h>
#include <string.h>
int main()
{
char a[201];
int i;
gets(a);
for(i=0; a[i]!=0; i++){
if(a[i]==' '){
printf("%c",a[i]);
}
else if('d'<=a[i] && a[i]<='z'){
printf("%c",a[i]-3);
}
else if('a'<=a[i] && a[i]<='c'){
printf("%c",a[i]+23);
}
}
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
char a[201];
int i;
gets(a);
for(i=0; a[i]!=0; i++){
if(a[i]==' '){
printf("%c",a[i]);
}
else if('a'<=a[i] && a[i]<='w'){
printf("%c",a[i]+3);
}
else if('x'<=a[i] && a[i]<='z'){
printf("%c",a[i]-23);
}
}
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
char a[101];
int i,b[101]={};
gets(a);
for(i=0; a[i]!=0; i++){
b[a[i]-'a']++;
}
for(i=0; i<26; i++){
printf("%c:%d\n",i+'a',b[i]);
}
return 0;
}
sort
1. easy but slow ) 버블,선택,삽입
2. hard but fast ) 퀵... (재귀)
1번 루틴 끝났을때
버블정렬 : 맨 뒤에 한 자리가 정렬됨.
퀵정렬 : (기준값보다 작은 값 ) 기준값 ( 기준값보다 큰값 )
#include <stdio.h>
int a[1000]={7,3,10,2,1};
void view(){
for(int i=0;i<5;i++){
printf("%d ",a[i]);
}
printf("\n");
}
//quick sort
void qs(int s, int e) //a[s] ~ a[e] 퀵정렬하세요
{
int pivot = s; //기준값의 위치는 start번째
int left = s, right=e;
int temp;
while(left<right){
while(a[pivot] >= a[left]){
left++;
}
while(a[pivot] <= a[right]){
right--;
}
if(left<right){
temp=a[left];
a[left]=a[right];
a[right]=temp;
}
}
temp=a[pivot];
a[pivot]=a[right];
a[right]=temp;
if(s<right-1) qs(s,right-1);
if(right+1<e) qs(right+1,e);
}
int main()
{
printf("before : ");
view();
qs(0,4);
printf("after : ");
view();
}
*/
/*
#include <stdio.h>
int a[100001];
void qs(int s,int e)
{
int pivot=s;
int left=s,right=e+1;
int temp;
do{
do{
left++;
}while(a[pivot]>a[left]);
do{
right--;
}while(a[pivot]<a[right]);
if(left<right){
temp=a[left];
a[left]=a[right];
a[right]=temp;
}
}while(left<right);
temp=a[pivot];
a[pivot]=a[right];
a[right]=temp;
if(s<right-1)qs(s,right-1);
if(right+1<e)qs(right+1,e);
}
int main()
{
int n;
scanf("%d",&n);
for(int i=1; i<=n; i++){
scanf("%d",&a[i]);
}
qs(1,n);
for(int i=1; i<=n; i++){
printf("%d\n",a[i]);
}
return 0;
}
이진탐색 , 이분탐색 : 정렬이 되어있는 배열에서 어떤 숫자를 찾을때, 반씩 쪼개가면서 찾기
//binary search
#include <stdio.h>
int bs(int s, int e, int k) //a[s] ~ a[e] 중 k의 위치를 리턴
{
int mid=(s+e)/2;
if(){
//재귀 종료조건 없었으면 -1
}
if(a[mid]==k) return mid;
else if(a[mid]<k) bs(mid+1,e,k);
else bs(mid-1,s,k);
}
#include <stdio.h>
#include <string.h>
int main()
{
int n,i,k,p,a[10]={0,1,2,3,4,5,6,7,8,9};
char b[12]={'A','B','C','D','E','F','G','H','I','J','K','L'};
scanf("%d",&n);
p=(n+6)%10;
k=(n-4)%12;
printf("%c%d",b[k],p);
return 0;
}
*/