백준 Baekjoon

[JAVA] 백준 1822 : 차집합

sujo 2020. 8. 2. 16:21

백준 1822 : 차집합

 

문제 링크

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

 

1822번: 차집합

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

www.acmicpc.net

 

 

문제 내용

(요약) 몇 개의 자연수로 이루어진 두 집합 A와 B가 있다. 집합 A에는 속하면서 집합 B에는 속하지 않는 모든 원소를 구하는 프로그램을 작성하시오.

 

 

Idea

집합의 기능을 가지면서 순서대로 정렬해주는 TreeSet을 이용한다.

A집합의 원소를 삽입해두고 새로 받는 B집합의 원소와 비교하며 같은 원소이면 삭제한다.

  • A.contains : 포함된 요소인지를 판별. true or false
  • A.remove : 해당 요소를 삭제
  • A.size : set의 크기(요소의 개수)를 반환

 

 

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.*;
 
public class Q_1822 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //TreeSet
        TreeSet<Integer> A = new TreeSet<Integer>();
        
        //원소 삽입
        int a = sc.nextInt();
        int b = sc.nextInt();
        int i, num;
        for(i=0;i<a;i++)
            A.add(sc.nextInt());
        for(i=0;i<b;i++) {
            num=sc.nextInt();
            //A에 포함된 요소면 삭제
            if(A.contains(num)) A.remove(num);
        }
        
        //결과 출력
        System.out.println(A.size());
        for(int n : A)
            System.out.print(n+" ");
        sc.close();
    }
}
cs

 

'백준 Baekjoon' 카테고리의 다른 글

[C언어] 백준 10872 : 팩토리얼  (0) 2020.08.14
[C++] 백준 1920 : 수 찾기  (0) 2020.08.06
[C언어] 백준 2577 : 숫자의 개수  (0) 2020.07.30
[C언어] 백준 2798 : 블랙잭  (0) 2020.07.30
[C언어] 백준 1475 : 방 번호  (0) 2020.07.27