본문 바로가기

Algorithm/BAEKJOON

[BOJ] 1822번 차집합 (C++)

728x90
반응형

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;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	
	int n, m, k;
	cin >> n >> m;
	
	set<int> s;
	
	for(int i = 0; i < n; i++){
		cin >> k;
		s.insert(k);
	}
	for(int j = 0; j < m; j++){
		cin >> k;
		s.erase(k);
	}
	
	cout << s.size() << endl;
	for(auto it = s.begin(); it != s.end(); it++){
		cout << *it << ' ';
	}
	return 0;
}

 

vector을 사용하여 풀었을 때 계속 시간 초과가 나왔다. vector의 push_back은 속도가 느리다.

따라서 연관 컨테이너로 바꿔서 풀거나 vector을 사용할 경우 reserve를 사용해야 한다. (링크 참조)

https://thuthi.tistory.com/entry/vector-pushback%EC%9D%80-%EB%8A%90%EB%A6%AC%EB%8B%A4-reserve

728x90
반응형

'Algorithm > BAEKJOON' 카테고리의 다른 글

[BOJ] 1766번 문제집 (C++)  (0) 2021.12.24
[BOJ] 2252번 줄 세우기 (C++)  (0) 2021.12.23
[BOJ] 5639번 이진 검색 트리 (C++)  (0) 2021.12.22
[BOJ] 1978번 소수 찾기 (C++)  (0) 2021.11.12
[BOJ] 15651번 N과 M (3) (C++)  (0) 2021.11.11