<백준> 1764

진기명기·2025년 4월 11일

코딩테스트<C++>

목록 보기
40/212

듣보잡

문제
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.

입력
첫째 줄에 듣도 못한 사람의 수 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";
	}
}

0개의 댓글