2022. 6. 22. 15:24ㆍ알고리즘/백준
https://www.acmicpc.net/problem/1269
1269번: 대칭 차집합
첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어
www.acmicpc.net
map에 대한 내용만 잘 숙지한다면 쉽게 풀 수 있는 문제였다.
https://ls011031.tistory.com/51
[C++][STL] map 사용법 정리
1. map이란? map은 각 노드가 key와 value 쌍으로 이루어진 트리입니다. 특히, 중복은 허용하지 않습니다. 따라서 map은 first, second가 있는 pair 객체로 저장되는데 first-key, second-value로 저장됩니다. c++..
ls011031.tistory.com
#include <iostream>
#include <map>
using namespace std;
map <int, int> m;
int main() {
int a, b;
int k;
int cnt = 0;
cin >> a >> b;
for (int i = 0; i < a; i++) {
cin >> k;
m[k] = 1;
cnt++;
}
for (int i = 0; i < b; i++) {
cin >> k;
if (m[k] == 1) {
cnt--;
}
else
cnt++;
}
cout << cnt;
}
대칭 차집합을 구하는 원리는
전체 원소의 갯수 -( a, b 공집합의 개수)를 해주면 된다.
그래서 내가 문제를 푼 방법은
먼저 첫번째 a의 수만큼 반복문을 돌려줄 때 m [k]에다가 방문했음을 알린다.
그리고 다음 b의 수만큼 방복문을 돌려줄때 방문했으면 cnt--를 해주고
방문을 안햇으면 cnt++해주면 된다.
map을 사용한 이유는 경우의 수가 최대 40만 개이지만, 원소의 크기의 범위가 1억을 넘어가서 1억 개를 담을 수 있는 배열을 만들 수 없기 때문에 map을 사용했다.
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 10815 숫자 카드 ( C++) (0) | 2022.06.30 |
---|---|
[백준] 1463 1로 만들기 (0) | 2022.06.28 |
백준 1107 리모컨 C++ (0) | 2022.06.09 |
백준 17478 재귀함수가 뭔가요? (0) | 2022.05.31 |
백준 17478 (0) | 2022.05.31 |