Algorithm/BOJ

백준 1822번 C++

poopooreum 2023. 7. 30. 15:31
반응형
백준 1822번 차집합

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

1822번: 차집합

첫째 줄에는 집합 A의 원소의 개수 n(A)와 집합 B의 원소의 개수 n(B)가 빈 칸을 사이에 두고 주어진다. (1 ≤ n(A), n(B) ≤ 500,000)이 주어진다. 둘째 줄에는 집합 A의 원소가, 셋째 줄에는 집합 B의 원소

www.acmicpc.net



정답 코드

#include<iostream>
#include<set>
using namespace std;
set<long long int>s1;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int a,b;
    cin>>a>>b;
    for(int x=0;x<a;x++){
        long long int n;
        cin>>n;
        s1.insert(n);
    }
    for(int x=0;x<b;x++){
        long long int n;
        cin>>n;
        set<long long int>::iterator it=s1.find(n);
        if(it!=s1.end())
            s1.erase(n);
    }
    if(s1.size()==0)
        cout<<"0";
    else{
        cout<<s1.size()<<'\n';
        set<long long int>::iterator iter;
        for(iter = s1.begin(); iter != s1.end(); iter++){
           cout << *iter << " " ;
        }
    }
}


문제 풀이

집합 자료구조와 반복자를 이용해서 풀 수 있습니다.
원소의 자료형 크기에 주의해야 하며 이외에는 set의 기본함수와 반복자를 이용해서 출력 및 판정하는 문제입니다.

집합(set)더 알아보기
반복자(iterator)더 알아보기

반응형