πŸ•οΈ ICPC Sinchon/Linear Data Structure

[C++][BOJ] λ°±μ€€ 1822번: 차집합

선달 2024. 8. 23. 03:27
λ°˜μ‘ν˜•

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

 

문제

λͺ‡ 개의 μžμ—°μˆ˜λ‘œ 이루어진 두 집합 A와 Bκ°€ μžˆλ‹€. 집합 Aμ—λŠ” μ†ν•˜λ©΄μ„œ 집합 Bμ—λŠ” μ†ν•˜μ§€ μ•ŠλŠ” λͺ¨λ“  μ›μ†Œλ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫째 μ€„μ—λŠ” 집합 A의 μ›μ†Œμ˜ 개수 n(A)와 집합 B의 μ›μ†Œμ˜ 개수 n(B)κ°€ 빈 칸을 사이에 두고 주어진닀. (1 ≤ n(A), n(B) ≤ 500,000)이 주어진닀. λ‘˜μ§Έ μ€„μ—λŠ” 집합 A의 μ›μ†Œκ°€, μ…‹μ§Έ μ€„μ—λŠ” 집합 B의 μ›μ†Œκ°€ 빈 칸을 사이에 두고 주어진닀. ν•˜λ‚˜μ˜ μ§‘ν•©μ˜ μ›μ†ŒλŠ” 2,147,483,647 μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ©°, ν•˜λ‚˜μ˜ 집합에 μ†ν•˜λŠ” λͺ¨λ“  μ›μ†Œμ˜ 값은 λ‹€λ₯΄λ‹€.

좜λ ₯

첫째 쀄에 집합 Aμ—λŠ” μ†ν•˜λ©΄μ„œ 집합 Bμ—λŠ” μ†ν•˜μ§€ μ•ŠλŠ” μ›μ†Œμ˜ 개수λ₯Ό 좜λ ₯ν•œλ‹€. λ‹€μŒ μ€„μ—λŠ” ꡬ체적인 μ›μ†Œλ₯Ό 빈 칸을 사이에 두고 μ¦κ°€ν•˜λŠ” μˆœμ„œλ‘œ 좜λ ₯ν•œλ‹€. 집합 Aμ—λŠ” μ†ν•˜λ©΄μ„œ 집합 Bμ—λŠ” μ†ν•˜μ§€ μ•ŠλŠ” μ›μ†Œκ°€ μ—†λ‹€λ©΄ 첫째 쀄에 0λ§Œμ„ 좜λ ₯ν•˜λ©΄ λœλ‹€.

 

풀이

// 풀이 : https://whkakrkr.tistory.com

#include <iostream>
#include <set>

using namespace std;

int main() {
	int na, nb, tmp;
	cin >> na >> nb;
	
	set<long long>s;
	for(int i=0; i<na; i++) {
	    cin >> tmp;
	    s.insert(tmp);
	}
	for(int i=0; i<nb; i++) {
	    cin >> tmp;
	    s.erase(tmp);
	}
	
	cout << s.size() << "\n";
	for(long long i : s) {
	    cout << i << " ";
	}

    return 0;
}
λ°˜μ‘ν˜•