문제 풀이/BOJ 문제 풀이

[BOJ알고리즘, C++]#1269_대칭 차집합, Set

Hardii2 2022. 12. 4. 20:53

 

[BOJ 알고리즘, C++] #1269_대칭 차집합, Set

 

BOJ 알고리즘 문제 풀이, 1269_대칭 차집합, Set

Set 컨테이너를 통해 두 집합의 대칭 차집합을 구합니다.

 


 

문제

 

풀이
  1. Set을 활용하면 아주 간단하게 풀 수 있는 문제입니다.
  2. 두 개의 집합 간 서로 중복되지 않는 원소들의 개수를 구합니다.
  3. Set 컨테이너는 항목들 간 중복을 허용하지 않습니다. 이러한 특징을 염두에 두고 풀이합니다.

 

 코드
#include <iostream>
#include <set>
#include <algorithm>	// find()를 활용하기 위해 <algorithm> 헤더를 추가합니다.
typedef long long ll;
using namespace std;

int main()
{
    int N, T;
    set<ll> s;

    cin >> N >> T;

    int set1Num = N;
    int set2Num = T;
    int res;

    ll num;
    for(int i=0; i<N; i++)
    {
        cin >> num;

        s.insert(num); 
    }

    for(int i=0; i<T; i++)
    {
        cin >> num;
		
        // find(KEY) : 	찾고자하는 Key 값이 존재하면 해당 Key 값을 가리키는 반복자를 반환하지만,
        //		없으면 마지막 항목 다음을 가리키는 반복자를(s.end()) 반환합니다.
        auto it = s.find(num);
        if(it != end(s))
        {
            set1Num--;
            set2Num--;         
        }
    }

    cout << set1Num + set2Num << endl;
}