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

+ Recent posts