본문 바로가기
Problem Solving/Baekjoon

[백준] 1822 차집합 - Data Structure / Java

by graycode 2023. 3. 9.

 문제 링크

 

1822번: 차집합

첫째 줄에는 집합 A의 원소의 개수 n(A)와 집합 B의 원소의 개수 n(B)가 빈 칸을 사이에 두고 주어진다. (1 ≤ n(A), n(B) ≤ 500,000)이 주어진다. 둘째 줄에는 집합 A의 원소가, 셋째 줄에는 집합 B의 원소

www.acmicpc.net

 

 풀이 과정

 

 풀이 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());

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

        Set<Integer> set = new TreeSet<>();

        st = new StringTokenizer(br.readLine());
        while (a-- > 0)
            set.add(Integer.parseInt(st.nextToken()));

        st = new StringTokenizer(br.readLine());
        while (b-- > 0) {
            int n = Integer.parseInt(st.nextToken());
            if (set.contains(n))
                set.remove(n);
        }

        bw.write(set.size() + "\n");

        if (set.size() != 0) {
            for (int i : set)
                bw.write(i + " ");
        }

        bw.flush();
    }

}

댓글