본문 바로가기
백준 코딩테스트/실버

1920) 수 찾기 (C++)

by xortl98 2022. 5. 1.
728x90

 출처 

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

 내 풀이 

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int N = 0, M = 0;
int input = 0;

vector<int>v;
vector<int>v2;

int main()
{
	//cin >> N;
	scanf_s("%d", &N);
	for (int i = 0; i < N; i++)
	{
		scanf_s("%d", &input);
		v.push_back(input);
	}

	//cin >> M;
	scanf_s("%d", &M);
	for (int i = 0; i < M; i++)
	{
		scanf_s("%d", &input);
		v2.push_back(input);		
	}

	//이진 탐색을 진행하려면 사전에 정렬이 필요함 
	sort(v.begin(), v.end());

	for (int i = 0; i < M; i++)
	{
		printf("%d\n", binary_search(v.begin(), v.end(), v2[i]));
		//cout << binary_search(v.begin(), v.end(), v2[i]) << endl;
	}

}

 해설

벡터 v,v2를 선언하여 v, v2에 각각 입력을 받았다.

binary_search를 사용하기 위해서는 사전에 미리 정렬이 필요한데 값이 있는지 확인해야할 v 벡터만 정렬시킨 후

밑에서 정답을 출력하였다.

 

 느낀점 

binary_search 푸는 방법을 알았고 생각보다 간단했다. 펄크루트 영상에 나온 인턴 코딩테스트를 확인해보니 문자열과 노드 탐색이 나온다고 한다. 그쪽을 열심히 풀어봐야겠다. 

 

'백준 코딩테스트 > 실버' 카테고리의 다른 글

2164) 카드2 (C++)  (0) 2022.05.05
18258) 큐 2 (C++)  (0) 2022.05.04
11053) 가장 긴 증가하는 부분 수열 (C++)  (0) 2022.04.30
9327) 이장님 초대 (C++)  (0) 2022.04.28
2156) 포도주 (C++)  (0) 2022.04.28