티스토리 뷰

Algorithm/BOJ

백준 1920번 C++

poopooreum 2023. 8. 2. 20:57
반응형
백준 1920번 수 찾기

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

1920번: 수 찾기

첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들

www.acmicpc.net



정답 코드

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

int static 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;
}
void result(int *arr, int n, int x) {
    int min = 0, max = n - 1;
    while (min <= max) {
        int mid = (min + max) / 2;
        if (arr[mid] == x) {
            printf("%d\n", 1);
            return;
        }
        else if (arr[mid] > x) max = mid - 1;
        else min = mid + 1;
    }
    printf("%d\n", 0);
    return;
}
int main() {
    int n, m, num;
    scanf("%d", &n);
    int *arr= (int*)malloc(sizeof(int) * n);
    for (int i = 0; i < n; i++) scanf("%d", &arr[i]);
    qsort(arr, n, sizeof(int), compare);
    scanf("%d", &m);
    for (int i = 0; i < m; i++) {
        scanf("%d", &num);
        result(arr,n,num);
    }
    return 0;
}

문제 풀이

이분 탐색을 이용해서 풀 수 있는 문제입니다. 메모리는 malloc함수를 이용해서 동적으로 할당을 하였고 qsort를 사용할 때 compare함수를 인위적으로 수정하였습니다.

반응형

'Algorithm > BOJ' 카테고리의 다른 글

백준 1927번 C++  (0) 2023.08.03
백준 1926번 C++  (0) 2023.08.03
백준 1916번 C++  (0) 2023.08.02
백준 1914번 C++  (0) 2023.07.30
백준 1912번 C++  (0) 2023.07.30
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함