#include <iostream>
#include <map>
using namespace std;
map<string, int> hear;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n, m;
int count = 0;
string value;
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> value;
hear.insert({ value, 0 });
}
for (int i = 0; i < m; i++) {
cin >> value;
if (hear.find(value) != hear.end()) {
count++;
hear[value]++;
}
}
cout << count << "\n";
for (map<string, int>::iterator iter = hear.begin(); iter != hear.end(); iter++) {
if (iter->second > 0) {
cout << iter->first << "\n";;
}
}
return 0;
}
https://www.acmicpc.net/problem/1764
아이디어:
1. 일반적인 배열은 시간복잡도가 높아 map(O(logn))과 find를 사용
2. map의 반복자 iter를 사용해서 순환
'algorithm' 카테고리의 다른 글
백준 1934번 최소공배수 (1) | 2024.10.20 |
---|---|
백준 11478번 서로 다른 부분 문자열의 개수 (0) | 2024.10.20 |
백준 1269번 대칭 차집합 (2) | 2024.10.13 |
백준 10816번 숫자 카드 2 (1) | 2024.10.13 |
백준 1620번 나는야 포켓몬 마스터 이다솜 (1) | 2024.10.13 |