[BOJ] 10815. 숫자 카드

동스토리 ㅣ 2020. 10. 17. 11:12

반응형

문제

www.acmicpc.net/problem/10815

 

10815번: 숫자 카드

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

www.acmicpc.net


해설

이진탐색으로 해결하였으며, 이진탐색은 정렬이 되어 있어야 한다.


코드

#include<iostream>
#include<algorithm>

using namespace std;

int n[500001];
int m[500001];

int binarysearch(int low, int high, int target) {

	if (low > high) return 0;
	else {

		int mid = (low + high) / 2;
		if (n[mid] == target) return 1;
		else if (n[mid] > target)
			return binarysearch(low, mid - 1, target);
		else
			return binarysearch(mid + 1, high, target);
	}
}

int main() {

	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	int x;
	cin >> x;

	for (int i = 0; i < x; i++) cin >> n[i];

	sort(n, n + x);

	int y;
	cin >> y;

	for (int i = 0; i < y; i++) {
		cin >> m[i];
		cout << binarysearch(0, x - 1, m[i]) << " ";
	}
	return 0;
}

 

 

 

반응형

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

[BOJ] 10845. 큐  (0) 2020.10.17
[BOJ] 10828. 스택  (0) 2020.10.17
[BOJ] 1920. 수 찾기  (0) 2020.10.17
[BOJ] 3085. 사탕 게임  (0) 2020.10.06
[BOJ] 2583. 영역 구하기  (0) 2020.10.06