백준

백준 1269 대칭 차집합(Java)

Park DJ 2023. 1. 27. 20:03

https://www.acmicpc.net/problem/1269

 

1269번: 대칭 차집합

첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어

www.acmicpc.net


 

해석 및 팁

 


 

먼저 대칭차집합 원소의 개수 공식은 a + b - 2(a∩b) 이므로 HashMap을 사용하여 a와 b의 교집합의 개수만 찾으면 쉽게 풀 수 있습니다. 먼저 a의 원소를 key에 개수를 value에 저장한 후 b의 원소가 존재하면 count++을 하면 됩니다. 마지막으로 a와 b의 개수의 합과 교집합의 2배를 빼주면 됩니다.

 


 

Java 코드

 


import java.util.Scanner;
import java.util.HashMap;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    HashMap<Integer, Integer> map = new HashMap<>();  

    int a = sc.nextInt();
    int b = sc.nextInt();
    
    int count = 0;
   
    for(int i = 0; i < a; i++) {
      int num = sc.nextInt();
      map.put(num, 1);
    }

    for(int i = 0; i < b; i++) {
      int num = sc.nextInt();
      if(map.containsKey(num)) count++;
    }
    
    System.out.println(a+b-2*count);
  }
}