본문 바로가기
Algorithm/C++

[백준 1920] 수 찾기

by imagineer_jinny 2022. 11. 1.

1920번: 수 찾기 (acmicpc.net)

 

1920번: 수 찾기

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

www.acmicpc.net

 

정답 코드

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

int a[100005];
int n;

int binarysearch(int target){
  int st = 0;
  int en = n-1;
  while(st <= en){
    int mid = (st+en)/2;
    if(a[mid] < target)
      st = mid+1;
    else if(a[mid] > target)
      en = mid-1;
    else
      return 1;
  }
  return 0; // st > en일 경우 while문을 탈출
}

int main(void) {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  for(int i = 0; i < n; i++) cin >> a[i];
  sort(a, a+n);
  int m;
  cin >> m;
  while(m--){
    int t;
    cin >> t;
    cout << BinarySearch(t) << '\n';
  }
}

 

 

더 쉬운 방법 - binary_search 함수 쓰기

#include <bits/stdc++.h>
using namespace std;
int a[100005];
int n;

int main(void) {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  for(int i = 0; i < n; i++) cin >> a[i];
  sort(a,a+n);
  int m;
  cin >> m;
  while(m--){
    int t;
    cin >> t;
    cout << binary_search(a, a+n, t) << '\n';
  }
}

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

[백준 2231] 분해합  (0) 2023.08.19
[백준 4344] 평균은 넘겠지  (0) 2023.08.19
[백준 2003] 수들의 합 2  (0) 2022.11.01
[백준 1806] 부분합  (0) 2022.11.01
[백준 2230] 수 고르기  (0) 2022.11.01

댓글