[C] 백준 1920 수 찾기

z00m__in·2021년 5월 8일
0

https://www.acmicpc.net/problem/1920

문제

N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.

제출 93000 정답 비율 31%





코드

#include <stdio.h>
#include <stdlib.h>

int compare(const void *a, const void *b)
{
    return *(int*)a > *(int*)b ? 1 : (*(int*)a < *(int*)b ? -1 : 0);
}

int bin_search(int* arr, int key, int size) { 
    int front, mid, back;
    front = 0; back = size - 1;
    while (1) {
        mid = (front + back) / 2;
        if (arr[mid] == key) return 1;
        if (arr[front] == key) return 1;
        if (arr[back] == key) return 1;

        if (arr[mid] < key)
            front = mid + 1;
        else
            back = mid - 1;
        if (back <= front) return 0;
    }
}

int main() {
	int n = 0, m=0;

	scanf("%d", &n);
	int* arr = malloc(n * sizeof(int));
	for (int i = 0; i < n; i++) {
		scanf("%d", &arr[i]);
	}

    scanf("%d", &m);
    int* arr2 = malloc(n * sizeof(int));
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr2[i]);
    }
    
    qsort(arr, n, sizeof(int), compare);

    for (int i = 0; i < m; i++) {
        printf("%d\n", bin_search(arr, arr2[j], n));
    }
    return 0;
}
profile
우당탕탕 기록지

0개의 댓글

Powered by GraphCDN, the GraphQL CDN