[C++] 백준 14단계 - 1269번 문제 (대칭 차집합)자료구조 & 알고리즘/BOJ2023. 7. 24. 03:54
Table of Contents
문제설명
소스코드
map을 이용
#include <iostream>
#include <map>
using namespace std;
int main(void)
{
map<int, bool> m;
int aSize, bSize;
cin >> aSize >> bSize;
for (int i = 0; i < aSize; i++)
{
int input;
cin >> input;
m.insert(pair<int, bool>(input, true)); //입력받은 값과 true를 맵에 저장
}
int count = 0; //교집합 개수를 저장
for (int i = 0; i < bSize; i++)
{
int input;
cin >> input;
if (m[input] == true) count++; //맵에 해당하는 값이 있으면 count를 1증가
}
cout << (aSize-count)+(bSize-count);
}
vector를 이용
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false); //표준 스트림 동기화 해제
cin.tie(nullptr); //입출력 연결 끊기
vector<int>v1, v2;
int aSize, bSize;
cin >> aSize >> bSize;
for (int i = 0; i < aSize; i++)
{
int input;
cin >> input;
v1.push_back(input);
}
sort(v1.begin(), v1.end()); //이진 탐색을 위한 v1 정렬
for (int i = 0; i < bSize; i++)
{
int input;
cin >> input;
if (binary_search(v1.begin(), v1.end(), input)) v2.push_back(input); //이진 탐색으로 v1에 input이 없으면 v2에 추가
}
cout << (aSize - v2.size()) + (bSize - v2.size()); //v2의 사이즈가 교집합의 개수
}
설명
- 두 코드 모두 집합 A는 모두 입력을 받는다.
- B 입력에서 A와 중복된 값이 있으면 교집합 개수를 증가시킨다.
- 답 : (A집합 크기 - 교집합 개수) + (B집합 크기 - 교집합 개수)
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[Java] 백준 15단계 - 1934번 문제 (최소공배수) (0) | 2023.07.25 |
---|---|
[C++] 백준 14단계 - 11478번 문제 (서로 다른 부분 문자열의 개수) (0) | 2023.07.24 |
[C++] 백준 14단계 1764번 문제 (듣보잡) (0) | 2023.07.23 |
[C++] 백준 14단계 - 10816번 문제 (숫자 카드 2) (0) | 2023.07.22 |
[C++] 백준 14단계 - 14425번 문제 (문자열 집합) (0) | 2023.07.21 |