처음에 map 을 이용해서 ++ -- 로 카운트 했더니 테스트 케이스에 같은 수가 중복이 있었는지 에러가 떴다
중복일 경우도 차집합에서 한번에 다 사라지게 해야하므로 중복 자체를 없애기 위해 set 에 넣어서
find 로 카운트, 카운트 한 수는 양 집합 모두에 있는 것이므로, 두 집합을 더한 후 카운트x2 로
양쪽에 있는 만큼 빼주면 차집합의 원소 개수 완성이다
https://www.acmicpc.net/problem/1269
#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;
}
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
[백준 1436/c++] 영화감독 숌 (0) | 2022.07.28 |
---|---|
[백준 5555/c++] 반지 (0) | 2022.07.27 |
[백준 1120/c++] 문자열 (0) | 2022.07.24 |
[백준 7568/c++] 덩치 (0) | 2022.07.23 |
[백준 11659/c++] 구간 합 구하기 4 (0) | 2022.07.22 |
댓글