[BOJ] 1269 : 대칭 차집합
Question
Solution
- a에 대한 집합을 set에 저장한다.
- b에 대한 요소를 입력 받을 때 동시에 a와의 공통되는 요소가 있는지 검사한다.
- 공통된 요소가 n개라면 전체 원소의 갯수 (a + b)에서 -2n을 한다. ()
Cord
#include <iostream>
#include <set>
using namespace std;
set<int> sA;
int main()
{
int a, b, num;
cin >> a >> b;
int count = a + b;
// A 집합 입력
for (int idx = 0; idx < a; idx++)
{
cin >> num;
sA.insert(num);
}
// B 집합 입력 과 동시에 공통된 원소 찾기
for (int idx = 0; idx < b; idx++)
{
cin >> num;
if (sA.find(num) != sA.end())
{
count -= 2;
}
}
// 출력
cout << count;
return 0;
}
Result
처음에는 a와 b에 대한 집합 set을 두가지로 나눠 저장하여 공통 원소를 찾았었다.
다시보니 굳이 b의 데이터를 저장할 필요가 없어 간추려 보았다.