문자열 교집합
배운점
- unordered_set는 set와 달리 정렬을 하지 않기 때문에 연산량이 많지 않다.
- words.find(str)==words.end()라는 의미는 words라는 집합에서 str의 값을 찾지 못했다는 의미이다.
#include <iostream>
#include <string>
#include <unordered_set>
using namespace std;
int T, N, M;
unordered_set<string> words;
string str;
int cnt;
int main() {
scanf("%d", &T);
for (register int tc = 1; tc <= T; tc++) {
words.clear(); cnt = 0;
scanf("%d %d", &N, &M);
for (register int i = 0; i < N; i++) {
cin >> str;
words.emplace(str);
}
for (register int i = 0; i < M; i++) {
cin >> str;
if(words.find(str)==words.end()) words.emplace(str);
else cnt++;
}
printf("#%d %d\n", tc, cnt);
}
return 0;
}