본문 바로가기
이론/코딩테스트

[백준] 2776번 암기왕 (이분탐색)

by 퇴근후개발 2022. 8. 25.
반응형

-문제

 

-코드

#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;

int main() 
{
	int t, n, m, lt, rt, mid, cnt = 0, key;
	scanf("%d", &t);
	for (int i = 0; i < t; i++)
	{
		scanf("%d", &n);
		vector<int> a(n);
		for (int i = 0; i < n; i++)
		{
			scanf("%d", &a[i]);
		}

		scanf("%d", &m);

		sort(a.begin(), a.end());

		for (int i = 0; i < m; i++)
		{
			scanf("%d", &key);
			lt = 0;
			rt = n - 1;
			cnt = 0;
			while (lt <= rt)
			{
				mid = (lt + rt) / 2;
				if (a[mid] == key)
				{
					cnt = 1;
					break;
				}
				else if (a[mid] < key) lt = mid + 1;
				else rt = mid - 1;
			}
			printf("%d\n", cnt);
		}
	}
	return 0;
}

 

- 코드

#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;

int main() 
{
	int t, n, m, cnt = 0, key;
	scanf("%d", &t);
	for (int i = 0; i < t; i++)
	{
		scanf("%d", &n);
		vector<int> a(n);
		for (int i = 0; i < n; i++)
		{
			scanf("%d", &a[i]);
		}

		scanf("%d", &m);

		sort(a.begin(), a.end());

		for (int i = 0; i < m; i++)
		{
			scanf("%d", &key);

			if (binary_search(a.begin(), a.end(), key)) printf("%d\n", 1);
			else printf("%d\n", 0);
		}
	}

	return 0;
}
반응형