문제 링크: https://www.acmicpc.net/problem/1764

 

교집합을 출력하면 됩니다

std::set_intersection을 사용하면 편리합니다.

#pragma GCC optimize ("Ofast")

#define _CRT_SECURE_NO_WARNINGS
#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING
#include <bits/stdc++.h>
using namespace std;


int main()
{
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
#endif

	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);

	set<string> s1, s2;

	int n, m;
	string s;
	cin >> n >> m;
	while (n--) {
		cin >> s;
		s1.insert(s);
	}

	while (m--) {
		cin >> s;
		s2.insert(s);
	}

	vector<string> v;

	set_intersection(s1.begin(), s1.end(),
		s2.begin(), s2.end(),
		back_inserter(v));

	cout << v.size() << '\n';
	for (auto& c : v)
		cout << c << '\n';


	return 0;
}
반응형

'Online Judge > 백준' 카테고리의 다른 글

[백준][C++] 19236: 청소년 상어  (0) 2020.07.11
[백준][C++] 1780: 종이의 개수  (0) 2020.07.11
[백준][C++] 2993: 세 부분  (0) 2020.07.09
[백준][C++] 1806: 부분합  (0) 2020.07.08
[백준][C++] 2473: 세 용액  (0) 2020.07.08