백준 1269 대칭 차집합 / C++

이유참치·2025년 7월 31일

백준

목록 보기
18/248

문제 : 1269

풀이 point

map을 활용하여 풀이를 진행한다.

A집합에 있는 값이 B집합에 없는 경우가 차집합이다.
반대도 마찬가지이다.

C++에서는 std::set_symmetric_difference 함수를 사용하여 간단하게 구현가능하다.

auto it = std::set_symmetric_difference(
set1.begin(), set1.end(),
set2.begin(), set2.end(),
result.begin()
);

단, result의 크기는 결과를 저장할 충분한 공간이 확보 되어 있어야한다.

풀이 방법

set에 각각 저장해둔 뒤 setA에 있는 값이 setB에 있는지 없는지 파악하면 된다.

코드

//백준 1269, 대칭 차집합

#include <iostream>
#include <set>

std::set<int> A;
std::set<int> B;

int main (){

    std::ios_base::sync_with_stdio(false);
    std::cin.tie(NULL);
    std::cout.tie(NULL);

    int N, M;
    int n, m;
    std::cin >> N >> M;
    for(int i{0}; i<N; ++i){
        std::cin >> n;
        A.insert(n);
    }

    for(int i{0}; i<M; ++i){
        std::cin >> m;
        B.insert(m);
    }

    int ans{0};
    for(auto n : A){
        if(B.find(n) == B.end()) ++ans; 
    }

    for(auto n : B){
        if(A.find(n) == A.end()) ++ans; 
    }

    std::cout << ans << '\n';

    return 0;
}

2025-01-26T01:52:24.922Z

profile
임아리 - 대학생

0개의 댓글