개발/알고리즘

백준 1764번 : 듣보잡

라사 RASA 2020. 6. 27. 15:51

문제 설명


이 문제는 듣도 못한 사람과 보도 못한 사람의 명단에 모두 속해있는 사람의 명단을 구하는 문제이다.

 

 

접근 방법


처음에는 곧이곧대로 명단 2개 만들어서 중복되는 사람 찾고 result vector 에 넣었는데 그럴 필요 없었다. 하나의 vector 에 두 명단을 다 집어 넣고 중복되는 사람을 찾으면 된다. 중복된 사람은 정렬했을 때 이름이 반복되는 사람을 찾는 방법으로 찾았다.

 

#include <iostream>
#include <algorithm>
#include <string>
#include <vector>

using namespace std;

int main(void)
{
	int N,M,cnt=0;
	string temp;
	vector<string> name;
	vector<string> result;
	
	cin>>N>>M;
	
	for(int i=0; i<N+M; ++i)
	{
		cin>>temp;
		name.push_back(temp);
	}
	
	sort(name.begin(), name.end());
	
	for(int i=0; i<name.size()-1; ++i)
	{
		if(name.at(i)==name.at(i+1))
		{
			cnt++;
			result.push_back(name.at(i));
		}
	}
	
	cout<<cnt<<endl;
	
	for(int i=0; i<result.size(); ++i)
		cout<<result.at(i)<<endl;
	
	return 0;
}