문제
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
출력
듣보잡의 수와 그 명단을 사전순으로 출력한다.
앞의 문제와 비슷하게, binary_search를 사용해 포함된 문자열이 있는지 확인해서 출력해줬다.
int main()
{
int n, m;
cin >> n >> m;
string str;
vector<string> v;
vector<string> v2;
int count = 0;
for (int i = 0;i < n;i++)
{
cin >> str;
v.push_back(str);
}
sort(v.begin(), v.end());
for (int i = 0;i < m;i++)
{
cin >> str;
if (binary_search(v.begin(), v.end(), str))
{
count++;
v2.push_back(str);
}
}
sort(v2.begin(), v2.end());
cout << count << "\n";
for (int i = 0;i < v2.size();i++)
{
cout << v2[i] << "\n";
}
}