[백준] 1269 대칭차집합

leejihun·2022년 5월 24일
0

알고리즘

목록 보기
7/50

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

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

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


	map<int, int> A1;
	map<int, int> B1;

	int N = 0, M = 0;
	int Num = 0;
	cin >> N >> M;
	vector<int> v1;
	vector<int> v2;
	int Result = 0;

	for (int i = 0; i < N; i++)
	{
		cin >> Num;
		v1.push_back(Num);
		A1.emplace(Num, 1);
	}
	for (int i = 0; i < M; i++)
	{
		cin >> Num;
		v2.push_back(Num);
		B1.emplace(Num, 1);
	}
	 
	for (int i = 0; i < N; i++)
	{
		if (B1.count(v1[i]) == 0)
		{
			Result++;
		}
	}

	for (int i = 0; i < M; i++)
	{
		if (A1.count(v2[i]) == 0)
		{
			Result++;
		}
	}
	
	cout << Result;
}

맵을 두개만들어서 키값을 검사하는식으로 문제를 해결 하였으나 for 문을 4번 쓰면서 예쁘게 풀리진 않았다.

다른풀이를 보니 erase를 이용해서 간단하게풀었다.

int num;
int main(void)
{
	cin >> N >> M;
	for (int i = 0; i < N+M; i++)
	{
		cin >> num;
		if (m[num] == true) // 이미 존재하면 map에서 제거를 한다.
			m.erase(num);
		else // 존재 안하면 추가를 해준다.
			m[num] = true;
	}
	cout << m.size(); // 남은 map 사이즈를 출력

}
profile
U+221E

0개의 댓글