Difference between r1.2 and the current
@@ -127,7 +127,39 @@
== 수 찾기 ==
{{{
(코드는 여기에)
#include <stdio.h>
#include <stdlib.h>
int A[100001];
int N;
int compare(void *first, void* second){
if(*(int*)first> *(int*)second) return 1;
else if(*(int*)first<*(int*)second) return -1;
return 0;
}
int B_S(int s, int e, int search){
int m = (s+e)/2;
if(s>e) return 0;
if(A[m]==search) return 1;
else if(A[m]>search) return B_S(s,m-1,search);
else return B_S(m+1, e, search);
}
int main() {
int i, j, min_idx, tmp, T, search;
scanf("%d", &N);
for(i=0;i<N;i++) {
scanf("%d",&A[i]);
}
qsort(A, N, sizeof(int), compare);
scanf("%d", &T);
for(i=0;i<T;i++){
scanf("%d", &search);
printf("%d\n", B_S(0, N-1, search));
}
return 0;
}
}}}= 정석우 =
2.1. 수 정렬하기 ¶
#include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { int n, i, j, minj, temp; int *arr; scanf("%d", &n); arr = (int *)malloc(sizeof(int) * n); for(i=0; i<n; i++) scanf("%d", arr + i); for(i=0; i<n; i++) { minj = i; for(j=i+1; j<n; j++) { if(arr[j] < arr[minj]) { minj = j; } } temp = arr[minj]; arr[minj] = arr[i]; arr[i] = temp; printf("%d\n", arr[i]); } return 0; }
2.2. 수 찾기 ¶
#include <stdio.h> #include <stdlib.h> // 오름차순 정렬 int compare (const void *first, const void *second) { if (*(int*)first > *(int*)second) return 1; else if (*(int*)first < *(int*)second) return -1; else return 0; } int main(int argc, char* argv[]) { int n1, n2, i; int *arr1, *arr2; int B_S(int *arr, int size, int solution); scanf("%d", &n1); arr1 = (int *)malloc(sizeof(int) * n1); for(i=0; i<n1; i++) scanf("%d", &arr1[i]); // 정렬 qsort(arr1, n1, sizeof(int), compare); scanf("%d", &n2); arr2 = (int *)malloc(sizeof(int) * n2); for(i=0; i<n2; i++) scanf("%d", &arr2[i]); // 서치 for(i=0; i<n2; i++) { printf("%d\n", B_S(arr1, n1, arr2[i])); } return 0; } // 바이너리 서치 int B_S(int *arr, int size, int solution) { int s=0, e=size-1; int m; while(s <= e) { m = (s+e)/2; if(arr[m] > solution) e = m - 1; else if(arr[m] < solution) s = m + 1; else return 1; } return 0; }
3.1. 수 정렬하기 ¶
#include <stdio.h> int main() { int N; int A[2000]; scanf("%d", &N); for (int i = 0; i < N; i++) { scanf("%d", &A[i]); } for (int i = 0; i < N; i++) { for (int j = i; j < N; j++) { if (A[i] > A[j]) { int tmp = A[i]; A[i] = A[j]; A[j] = tmp; } } } for (int i = 0; i < N; i++) { printf("%d\n", A[i]); } return 0; }
3.2. 수 찾기 ¶
#include <stdio.h> #include <stdlib.h> int A[100001]; int N; int compare(void *first, void* second){ if(*(int*)first> *(int*)second) return 1; else if(*(int*)first<*(int*)second) return -1; return 0; } int B_S(int s, int e, int search){ int m = (s+e)/2; if(s>e) return 0; if(A[m]==search) return 1; else if(A[m]>search) return B_S(s,m-1,search); else return B_S(m+1, e, search); } int main() { int i, j, min_idx, tmp, T, search; scanf("%d", &N); for(i=0;i<N;i++) { scanf("%d",&A[i]); } qsort(A, N, sizeof(int), compare); scanf("%d", &T); for(i=0;i<T;i++){ scanf("%d", &search); printf("%d\n", B_S(0, N-1, search)); } return 0; }