본문 바로가기
백준/C++

백준 1764번 : 듣보잡 [C++]

by 대니스 2022. 8. 26.

주소 : https://www.acmicpc.net/problem/1764

 

1764번: 듣보잡

첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.

www.acmicpc.net

소스 코드 :

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
	int N, M;
	cin >> N >> M;
	set<string> l;
	set<string> s;
	vector<string> result;

	for (int i = 0;i < N;i++)
	{
		string element;
		cin >> element;
		l.insert(element);
	}
	
	for (int j = 0;j < M;j++)
	{
		string element;
		cin >> element;
		s.insert(element);
	}

	set_intersection(l.begin(), l.end(), s.begin(), s.end(), back_inserter(result));

	cout << result.size() << '\n';
	
	for (int i = 0;i < result.size();i++)
	{
		cout << result[i] << '\n';
	}
	
}

마무리 : 처음에 브루트포스 알고리즘으로으로 구하려다가 시간 초과가 되어 집합을 2개로 만들어 듣지도 못하고 보지도 못한 사람을 출력해야하므로 교집합을 구해서 출력하였다.