[백준] 1269번-대칭 차집합-Java

screenshot

[백준] 1269번-대칭 차집합-Java


❓문제

  1. 대칭 차집합이란 두 집합의 합집합에서 공집합을 뺀 것을 대칭 차집합이라고 한다.
  2. 두 집합이 주어질때 대칭 차집합의 원소의 개수를 출력하라. 예시. A = {1,2,4} 이고 B = {2,3,4,5,6} 일때, A-B = { 1 } 이고,
    B-A = { 3, 5, 6 } 이므로, 대칭 차집합의 원소의 개수는 1 + 3 = 4개이다.

🖊️풀이법

  1. N요소를 HashSet객체에 담는다.
  2. M요소를 순서대로 Set객체에 포함하는지 확인한다.
  3. Set에 포함되는 경우 해당 요소를 지운다.
  4. 포함이되지 않는 경우 Set에 추가한다.
  5. Set의 Size를 출력한다.

정답 코드

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        Set<Integer> set = new HashSet<Integer>();
        st = new StringTokenizer(br.readLine());
        for(int i = 0; i < N; i++){
            set.add(Integer.parseInt(st.nextToken()));
        }
        st = new StringTokenizer(br.readLine());
        for(int i = 0; i< M; i++){
            int tmp = Integer.parseInt(st.nextToken());
            if(set.contains(tmp)){
                set.remove(tmp);
            } else{
                set.add(tmp);
            }
        }
        System.out.println(set.size());
    }
}

정리

앞전 문제와 간단히 contains메서드로 예외처리를 해주고 쉽게 풀수 있다.