본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 1269번 : 대칭 차집합 답

반응형

www.acmicpc.net/problem/1269

 

1269번: 대칭 차집합

첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어

www.acmicpc.net

 

풀이방법

 1. a에 대한 원소를 key, 나온 빈도를 value로 한 map 자료구조를 만듭니다.

 2. b의 원소를 map에서 key로 하여 검색했을 때 값이 있다면 a와 공집합에 대한 원소이므로 세줍니다.

 3. 답출력 : a원소 개수 + b원소 개수 - (공집합 원소의 개수 * 2)를 출력해줍니다.

Code

#include <bits/stdc++.h>
using namespace std;
map <int,int> m;
int aSize,bSize, ans;
int a[200001];
int b[200001];
int main(){
    cin >> aSize >> bSize;
    for(int i = 0; i < aSize; i++) cin >> a[i];
    for(int i = 0; i < bSize; i++) cin >> b[i];

    for(int i = 0; i < aSize; i++) m[a[i]]++;
    for(int i = 0; i < bSize; i++) if(m[b[i]]) ans++;

    cout << aSize + bSize - ans * 2 <<'\n';
}