문제 https://www.acmicpc.net/problem/1269
풀이
map을 이용하여 현재 들어온 원소 중에서 지금 입력된 원소와 겹치는 것이 있다면 cnt를 증가시킨다.
그렇지 않으면 map에 입력된 원소를 추가한다.
예제가 다 입력된 후에는 cnt에 겹치는 원소의 개수가 들어있게 된다.
그 후, 전체 원소의 개수에서 겹치는 원소의 개수*2 만큼을 빼면 대칭 차집합의 원소의 개수를 구할 수 있다.
즉, (집합 A의 원소의 개수 + 집합 B의 원소의 개수) - (겹치는 원소의 개수[cnt] * 2)를 하면 된다.
코드
#include <iostream>
#include <map>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n,m;
cin>>n>>m;
map<int,int> m1;
int cnt=0;
for(int i=0; i<n+m; i++)
{
int a;
cin>>a;
if(m1.find(a)!=m1.end()) cnt++;
else m1.insert({a,1});
}
cout<<n+m-(cnt*2);
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
백준 4963 - 섬의 개수(C++) (0) | 2022.06.19 |
---|---|
프로그래머스 - 전화번호 목록(c++) (0) | 2022.06.17 |
백준 9613 - GCD 합 (0) | 2022.06.05 |
백준 4948 - 베르트랑 공준 (0) | 2022.06.04 |
백준 17413 - 단어 뒤집기 (0) | 2022.06.03 |