대칭 차집합이 뭘까요?
그림으로 그려보면
이렇게 순수하게 A쪽에만 속하거나
순수하게 B쪽에만 속한 친구들을 모아놓은겁니다
1. A집합의 원소들을 입력받습니다
2. B집합의 원소들을 입력하면서, 그 원소가 A집합에 속해있는지 판단해 갯수를 샙니다
3. a집합 원소의 수 + b집합 원소의 수 - (공통부분*2)
코드입니다
import java.util.HashSet;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int m = scan.nextInt();
HashSet<Integer> set = new HashSet<>();
for (int i=0; i<n; i++) {
set.add(scan.nextInt());
}
int count = 0;
for (int i=0; i<m; i++) {
int k = scan.nextInt();
if(set.contains(k)) {
count += 1;
}
}
System.out.println(n+m-count*2);
}
}
HashSet은 <>안에 들어있는 것을 원소로 가지는 집합입니다
HashSet<Integer>니깐
set은 Integer를 원소로 갖는 집합이죠
set.add()를 이용해 집합에 원소를 추가해 줍니다
if(set.contains(?))는
집합 set이 ?를 원소로 갖는지
판단하는 부분입니다
count*2를 빼주는 이유는
공통부분을 빼야하기에
a쪽의 공통부분, b쪽의 공통부분
2배이기에 2를 곱했습니다
'백준 문제풀기 > JAVA' 카테고리의 다른 글
[백준 1330 JAVA 자바] 두 수 비교하기 (0) | 2023.07.30 |
---|---|
[백준 1316 JAVA 자바] 그룹 단어 체커 (0) | 2023.07.30 |
[백준 1193 JAVA 자바] 분수찾기 (0) | 2023.07.30 |
[백준 1181 JAVA 자바] 단어 정렬 (0) | 2023.07.30 |
[백준 1157 JAVA 자바] 단어 공부 (1) | 2023.07.29 |