백준 1822 c++

magicdrill·2024년 5월 17일
0

백준 문제풀이

목록 보기
348/655

백준 1822 c++

처음에는 vector를 사용해 A와 B 집합을 저장하고 전체비교를 통해 A의 B 차집합을 구하려고 했지만 시간초과가 발생할거 같았다. 이전에 배운 set이란 컨테이너가 생각나서 다시 복습해봤다.

set은 자료가 정렬된 형태로 저장되며, 중복을 허용하지 않고, 이진트리구조로 저장되기 때문에 검색연산이 빠르다는 장점이 있다.

#include <iostream>
#include <algorithm>
#include <set>

using namespace std;

void input_set(set<int>& A)
{
	int n_A, n_B;
	int i, temp;

	cin >> n_A >> n_B;
	for (i = 0; i < n_A; i++)
	{
		cin >> temp;
		A.insert(temp);
	}
	for (i = 0; i < n_B; i++)
	{
		cin >> temp;
		if (A.find(temp) != A.end())//A안에 temp값이 존재한다면?
		{
			A.erase(temp);
		}
	}

	return;
}

void find_answer(set<int>& A)
{
	if (A.size() == 0)
	{
		cout << A.size() << "\n";
	}
	else
	{
		cout << A.size() << "\n";
		for (int i : A)
		{
			cout << i << " ";
		}
		cout << "\n";
	}

	return;
}

int main(void)
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	set<int> A;

	input_set(A);
	find_answer(A);

	return 0;
}

0개의 댓글