백준 코딩테스트/실버
1920) 수 찾기 (C++)
xortl98
2022. 5. 1. 12:56
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 푸는 방법을 알았고 생각보다 간단했다. 펄크루트 영상에 나온 인턴 코딩테스트를 확인해보니 문자열과 노드 탐색이 나온다고 한다. 그쪽을 열심히 풀어봐야겠다.