Koala - 2기/B반
[1269번] 대칭 차집합
@김유정
2021. 2. 2. 00:16
1269번: 대칭 차집합
첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어
www.acmicpc.net
풀이
더보기
대칭 차집합의 성질을 이용하여 문제를 해결할 수 있습니다.
* (대칭 차집합) = (A-B) U (B-A)
결론적으로 대칭 차집합이란 두 개의 집합을 두고 보았을 때, 서로 겹치는 원소를 제외한 나머지가 됩니다.
이러한 대칭 차집합의 정의와 map 자료구조의 중복된 원소는 저장하지 않는 성질을 이용하여 문제를 풀었습니다.
1. a+b만큼 for문을 순회하며 원소를 입력받고,
2. mp(map)에 존재하지 않는 원소라면 (mp.count(x) == 0) mp에 저장하고
3. mp에 존재하는 원소라면 mp에서 원소를 삭제해줍니다.
마지막으로 mp의 사이즈를 출력해주어 문제를 해결할 수 있습니다 !
전체 코드
더보기
#include <iostream>
#include <map>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int a, b;
cin >> a >> b;
map<int, int> mp;
for (int i = 0;i < a + b;i++) {
int x;
cin >> x;
if (mp.count(x) == 0) mp[x] = 1;
else mp.erase(x);
}
cout << mp.size() << "\n";
}