a,b집합이 주어질 때 대칭 차집합의 원소의 개수를 구하는 문제다.
{A-B} + {B-A}의 원소의 수인데
A - AnB와 B - AnB이므로 AnB만 구하면 A + B - 2*AnB로 쉽게 구할 수 있다.
AnB는 A집합을 set에 insert하고 B를 입력받으며 이미 A에 존재하는 것을 체크하면 쉽게 구할 수 있다.
다른 방법으로는 A를 배열에 입력해놓고 정렬 한 후 B를 입력받으며 이분탐색을 직접 구현하여 찾아보는 방법이 있다.
<코드>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <stdio.h> #include <set> using namespace std; set<int> s1; int main() { int a, b, t, cnt = 0; scanf("%d%d", &a, &b); for (int i = 0; i < a; i++) { scanf("%d", &t); s1.insert(t); } for (int i = 0; i < b; i++) { scanf("%d", &t); if (s1.count(t)) cnt++; } printf("%d\n", a + b - 2 * cnt); return 0; } | cs |
'BOJ' 카테고리의 다른 글
1322 X와 K (0) | 2017.10.03 |
---|---|
1987 알파벳 (0) | 2017.10.03 |
13200 light up (0) | 2017.09.12 |
3187 양치기 꿍 (0) | 2017.09.12 |
3640 제독 (0) | 2017.09.07 |