본문 바로가기

백준 문제풀기/JAVA

[백준 1269 JAVA 자바] 대칭 차집합

 

대칭 차집합이 뭘까요?

 

그림으로 그려보면

 

 

이렇게 순수하게 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를 곱했습니다