BOJ 1920 c++

Algorithm / / 2020. 7. 18. 15:37

BOJ 1920 c++ 수 찾기

백준 1920번 수 찾기 c++


1. STL binary_search를 쓰지 않았을 때.


일치하는 값을 찾으면 1을 출력.

st가 en보다 커지는 경우 못 찾았다는 뜻이므로 0을 출력.


#include <bits/stdc++.h>
using namespace std;

int main () {
    ios::sync_with_stdio(0);
    cin.tie(0);

    int n, m;
    int arrN[100005];
    int arrM[100005];
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> arrN[i];
    cin >> m;
    for (int i = 0; i < m; i++)
        cin >> arrM[i];
    //여기까지 입력.

    //binary search start!
    sort(arrN, arrN + n);
    for (int i = 0; i < m; i++) {
        int st = 0;
        int en = n - 1;
        int target = arrM[i];
        while (st <= en) {
            int mid = (st + en)/2;
            if (arrN[mid] < target) {
                st = mid + 1;
            } else if (arrN[mid] > target) {
                en = mid - 1;
            } else {
                cout << 1 << '\n';
                break;
            }
        }
        if (st > en)
            cout << 0 << '\n';
    }
}

2. STL binary_search를 이용.


#include <bits/stdc++.h>
using namespace std;

int main () {
    ios::sync_with_stdio(0);
    cin.tie(0);

    int n, m;
    int arrN[100005];
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> arrN[i];
    cin >> m;
    //여기까지 입력.
    //STL 시작.
    sort(arrN, arrN + n);
    int t;
    for (int i = 0; i < m; i++) {
        cin >> t;
        cout << binary_search(arrN, arrN + n, t) << '\n';
    }
}

binary_search는 arrN ~ arrN + n 의 배열에서 t라는 value를 찾으면 true(1)을, 그렇지 않으면 false(0)을 반환한다.


분류 : 이진 탐색

'Algorithm' 카테고리의 다른 글

C++ 이진 탐색 STL binary_search, upper_bound, lower_bound  (0) 2020.07.18
BOJ 10816 c++  (0) 2020.07.18
BOJ 1676 c++  (0) 2020.07.18
BOJ 2217 c++  (0) 2020.07.17
BOJ 11653 c++  (0) 2020.07.17
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom