본문 바로가기
코딩테스트_백준풀이

수 찾기 #1920 c++ 풀이

by wanna_dev 2023. 10. 5.

 

#include<iostream>
#include<vector>
#include<string>
#include<stack>
#include<map>
#include<algorithm>
using namespace std;

vector<int> arr1;
vector<int> arr2;

int main() {
	int N, M;  
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	int temp;
	cin >> N;
	for (int i = 0; i < N; i++) {
		cin >> temp;
		arr1.push_back(temp);
	}
	cin >> M;
	for (int i = 0; i < M; i++) {
		cin >> temp;
		arr2.push_back(temp);
	}
	sort(arr1.begin(), arr1.end());
	for (int i = 0; i < M; i++) {
		cout<< binary_search(arr1.begin(), arr1.end(), arr2[i])<<'\n';
	}
	return 0;
}

https://www.acmicpc.net/problem/1920

 

1920번: 수 찾기

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

www.acmicpc.net

 

 

저번에 복습했던 bineary_search를 이용하여 풀었다.

먼저, 공간을 보니 MB단위로 넉넉하기도 하고 해서 

벡터로 먼저 sort를 돌리고, 그 다음 bineary_search를 하여 탐색을 진행했다.

bineary_search 에 대한 설명은 아래 블로그를 참고하자.

https://wannadev.tistory.com/72

 

이진탐색

단순 순회 알고리즘으로, 풀수 없는 백준 문제가 생겨나서 이진탐색 알고리즘을 복습하게 되었습니다. (1654번) 이진탐색 이란? - 정렬된 배열에서 검색 범위를 줄여 나가면서 검색 값을 찾는 알

wannadev.tistory.com