본문 바로가기
백준 코딩테스트/실버

1269) 대칭 차집합 (C++)

by xortl98 2022. 5. 17.
728x90

 출처 

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

 

1269번: 대칭 차집합

첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어

www.acmicpc.net

 내 풀이 

#include<iostream>
#include<map>
using namespace std;

int A = 0, B = 0;
int input = 0;
int result = 0;

map<int,int>mp;

int main()
{
	cin >> A >> B;

	int result = A;

	for (int i = 0; i < A; i++)
	{
		cin >> input;
		mp[input] = 1;
	}
	
	for (int i = 0; i < B; i++)
	{ 
		cin >> input;
		if (mp[input]==1)
		{
			mp[input] = 2;
			result--;
		}
		else
		{
			mp[input] = 1;
			result++;
		}
	}
	cout << result;
}

 해설

맵을 선언해주고 A, B를 입력받은 후 일단 결과값에 A값을 대입해준다.

그 후 A집합을 입력받고 B집합을 입력받을 때 만일 A집합하고 겹친다면 결과값을 하나 빼준 뒤

맵의 Value값을 2로 변경, 그게 아니면 겹치는게 없으므로 결과값을 1더해준다. 이 과정을 반복하였다. 

 

 느낀점 

잘 풀고 있는지 모르게따