본문 바로가기

PS_Baekjoon

[백준 C++] 1269번 : 대칭 차집합

https://www.acmicpc.net/problem/1269

 

1269번: 대칭 차집합

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

www.acmicpc.net

풀이 :

- 이전 문제들과 마찬가지로 계속 map의 기능을 활용하여 쉽게 풀 수 있다

- 집합 a의 원소 - 집합 b의 원소 즉, a와 b가 일치 하지 않는 원소의 갯수를 카운트 해주면 된다

- 따라서 map에 전부 넣어서 카운트를 하고, value값이 1이라면 겹치지 않는 뜻이기 때문에

   1일때만 카운트 해주면 답을 쉽게 구할 수 있다

 

코드 :

#include <iostream>
#include <map>
using namespace std;

int main(){
    cin.tie(NULL);
    ios::sync_with_stdio(false);

    int a, b, num, ans = 0;
    map<int, int> m;
    
    cin >> a >> b;
    while(a--){
        cin >> num;
        m[num]++; // a 집합의 수를 map에 넣으면서 카운트
    }
    while(b--){
        cin >> num;
        m[num]++; // b 집합의 수도 같은 map에 넣으면서 카운트
    }
    for(auto x : m){
        if(x.second == 1){ // 1인 경우 ans 카운트
            ans++;
        }
    }
    cout << ans << '\n';
}

 

'PS_Baekjoon' 카테고리의 다른 글

[백준 C++] 2559번 : 수열  (0) 2023.03.06
[백준 C++] 1065번 : 한수  (0) 2023.03.05
[백준 C++] 10816번 : 숫자 카드 2  (0) 2023.03.03
[백준 C++] 11652번 : 카드  (0) 2023.03.02
[백준 C++] 1436번 : 영화감독 숌  (0) 2023.03.01