https://www.acmicpc.net/problem/1269
#include<iostream>
#include<map>
#include<vector>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
map<int, int> A1;
map<int, int> B1;
int N = 0, M = 0;
int Num = 0;
cin >> N >> M;
vector<int> v1;
vector<int> v2;
int Result = 0;
for (int i = 0; i < N; i++)
{
cin >> Num;
v1.push_back(Num);
A1.emplace(Num, 1);
}
for (int i = 0; i < M; i++)
{
cin >> Num;
v2.push_back(Num);
B1.emplace(Num, 1);
}
for (int i = 0; i < N; i++)
{
if (B1.count(v1[i]) == 0)
{
Result++;
}
}
for (int i = 0; i < M; i++)
{
if (A1.count(v2[i]) == 0)
{
Result++;
}
}
cout << Result;
}
맵을 두개만들어서 키값을 검사하는식으로 문제를 해결 하였으나 for 문을 4번 쓰면서 예쁘게 풀리진 않았다.
다른풀이를 보니 erase를 이용해서 간단하게풀었다.
int num;
int main(void)
{
cin >> N >> M;
for (int i = 0; i < N+M; i++)
{
cin >> num;
if (m[num] == true) // 이미 존재하면 map에서 제거를 한다.
m.erase(num);
else // 존재 안하면 추가를 해준다.
m[num] = true;
}
cout << m.size(); // 남은 map 사이즈를 출력
}