본문 바로가기
개발 노트/백준, 프로그래머스 풀이

[백준 1269/c++] 대칭 차집합

by tokkiC 2022. 7. 25.

처음에 map 을 이용해서 ++ -- 로 카운트 했더니 테스트 케이스에 같은 수가 중복이 있었는지 에러가 떴다

중복일 경우도 차집합에서 한번에 다 사라지게 해야하므로 중복 자체를 없애기 위해 set 에 넣어서

find 로 카운트, 카운트 한 수는 양 집합 모두에 있는 것이므로, 두 집합을 더한 후 카운트x2 로 

양쪽에 있는 만큼 빼주면 차집합의 원소 개수 완성이다

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

 

1269번: 대칭 차집합

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

www.acmicpc.net

#include <bits/stdc++.h>
using namespace std;

int main(){
	
	int n, m, num;
	int cnt = 0;
	set<int> seti;
	
	cin >> n >> m;
	for (int i = 0; i < n; i++)
	{
		cin >> num;
		seti.insert(num);
	}
	for (int i = 0; i < m; i++)
	{
		cin >> num;
		if (seti.find(num) != seti.end())
		{
			cnt++;
		}
	}
	cout << n + m - 2*cnt << "\n";
	
	return 0;
}

댓글