본문 바로가기
BaekJoon/C++

10815 : 숫자 카드 (C++)

by GrayChoi 2021. 2. 17.
반응형

 

10815번: 숫자 카드

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net


바로 전 문제(숫자 카드 2)와는 다르게

중복 값이 없는 문제여서

그냥 바로 이분탐색으로 쉽게 풀리는 문제이다.

#include<iostream>
#include<algorithm>

using namespace std;

int main() {
    int N, M;

    scanf("%d", &N);

    int arr[N];

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

    sort(arr, arr + N);
    // 이분탐색을 수행하기위해 정렬을 수행

    scanf("%d", &M);

    for(int i = 0; i < M; i++) {
        int temp;
        int left = 0;
        int right = N - 1;
        int result = 0;

        scanf("%d", &temp);

        while(left <= right) {
            // 이분 탐색
            int mid = (left + right) / 2;

            if(temp == arr[mid]) {
                // 중복값이 없으므로 일치하면 바로 결과에 1을 넣고 while문 탈출
                result = 1;
                break;
            } else if(temp > arr[mid]) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }

        printf("%d ", result);
    }

    return 0;
}
반응형

'BaekJoon > C++' 카테고리의 다른 글

7562 : 나이트의 이동 (C++)  (0) 2021.02.17
1966 : 프린터 큐 (C++)  (0) 2021.02.17
10816 : 숫자 카드 2 (C++)  (0) 2021.02.17
2108 : 통계학 (C++)  (0) 2021.02.16
10866 : 덱 (C++)  (0) 2021.02.16

댓글