대칭 차집합

곽지욱·2024년 2월 19일

BOJ

목록 보기
46/69

1269번 : 대칭 차집합

  • 집합 A와 집합 B의 원소를 각각의 HashSet에 넣는다.

  • 집합 A에 있는 원소가 집합 B에 없다면 answer ++

  • 반대도 마찬가지..


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;

public class Set_1269 {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());

        Set<Integer> setA = new HashSet<>();
        Set<Integer> setB = new HashSet<>();

        st = new StringTokenizer(br.readLine());

        for (int i = 0; i<a; i++){
            setA.add(Integer.parseInt(st.nextToken()));
        }

        st = new StringTokenizer(br.readLine());

        for(int i = 0; i < b; i++) {
            setB.add(Integer.parseInt(st.nextToken()));
        }

        int answer = 0;
        for(int num : setA) {
            if(!setB.contains(num)) {
                answer += 1;
            }
        }

        for(int num : setB) {
            if(!setA.contains(num)) {
                answer += 1;
            }
        }

        System.out.println(answer);
    }
}
  1. HashSet 을 사용하여 집합을 표현 , (중복된 값을 허용하지 않고 순서를 보장하지 않는 자료구조임)

  2. st를 계속해서 초기화 시키는 이유는 예를들어 사용자가 3 5를 입력하고 enter를 치는 순간 StringTokenizer 객체가 한번 사용된 것으로 간주되어 자동으로 EOF(end of file)를 가리키게 되기 때문이다.

0개의 댓글