[백준] 1269번 대칭 차집합 C++

semi·2022년 8월 23일
0

coding test

목록 보기
34/57

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

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(void)
{
	int N, M;
	cin >> N >> M;
	vector<long long> A, B;
	long long tmp;
	for (int i = 0; i < N; i++)
	{
		cin >> tmp;
		A.push_back(tmp);
	}
	for (int j = 0; j < M; j++)
	{
		cin >> tmp;
		B.push_back(tmp);
	}
	int summation = A.size() + B.size();
	int union_num = 0;
	sort(A.begin(), A.end());
	int left_idx, right_idx, mid_idx;
	for (int i = 0; i < M; i++)
	{
		left_idx = 0;
		right_idx = A.size() - 1;
		long long target = B[i];
		while (left_idx <= right_idx)
		{
			mid_idx = (left_idx + right_idx) / 2;
			if (A[mid_idx] == target)
			{
				union_num++;
				break;
			}
			else if (A[mid_idx] > target)
			{
				right_idx = mid_idx - 1;
			}
			else
			{
				left_idx = mid_idx + 1;
			}
		}
	}
	if (summation - union_num * 2 > 0)
		cout << summation - union_num * 2;
	else
		cout << 0;
	return 0;
}

0개의 댓글