https://www.acmicpc.net/problem/1269
아이디어:
1. (A - B) + (B - A) 는 (A ∪ B) - (A ∩ B) 와 같다.
2. 교집합을 구하는 set_intersection() 함수는 아직 사용하기 어려워 정석대로 A ∪ B와 A ∩ B를 구해서 erase했다.
3. A ∪ B는 하나의 set에 A와 B의 원소를 모두 insert하면 알아서 중복을 제거하며 생성된다.
4. A ∩ B는 하나의 B의 원소가 A의 원소에도 있으면 추가하는 식으로 생성한다.
5. A ∪ B에서 A ∩ B를 erase하고 size를 출력한다.
// 1269
#include <iostream>
#include <set>
using namespace std;
int main() {
int n, m, k;
cin >> n >> m;
set<int> A;
set<int> B;
set<int> ABunion;
set<int> ABinter;
for (int i = 0; i < n; i++) {
cin >> k;
A.insert(k);
ABunion.insert(k);
}
for (int i = 0; i < m; i++) {
cin >> k;
B.insert(k);
ABunion.insert(k);
}
for (set<int>::iterator iter = B.begin(); iter != B.end(); iter++) {
if (A.find(*iter) != A.end()) {
ABinter.insert(*iter);
}
}
for (set<int>::iterator iter = ABinter.begin(); iter != ABinter.end(); iter++) {
ABunion.erase(*iter);
}
cout << ABunion.size();
return 0;
}
'algorithm' 카테고리의 다른 글
백준 1934번 최소공배수 (1) | 2024.10.20 |
---|---|
백준 11478번 서로 다른 부분 문자열의 개수 (0) | 2024.10.20 |
백준 1764번 듣보잡 (3) | 2024.10.13 |
백준 10816번 숫자 카드 2 (1) | 2024.10.13 |
백준 1620번 나는야 포켓몬 마스터 이다솜 (1) | 2024.10.13 |