JavaStudy-0053:集合集計


合計時間制限:3000 msメモリ制限:50000 kB
既知の集合Aと集合Bを記述し、第1の集合内のデータは一意である.A,B集合を求めて新しい集合Cに統合し,C集合内のデータも一意であることを要求する.C集合の個数を指摘する.
3行入力、1行目が集合A,Bの個数第2行A集合のデータ第3行B集合のデータ出力2行第1行集合Cの個数第2行C集合のデータ出力
サンプル入力
4 5
12 34 56 78
34 67 89 34 76

サンプル出力
7
12 34 56 78 67 89 76

Acceptedコード
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int[] a=new int[100];
        int ans=0;
        int n=in.nextInt();
        int m=in.nextInt();
        for (int i=0;i<n;i++)
            a[i]=in.nextInt();
        for (int i=n;i<m+n;i++)
            a[i]=in.nextInt();
        for(int i=0;i<m+n;i++)
            for(int j=0;j<i-1;j++)
                if(a[i]==a[j] && a[i]!=300000) {
                    ans++;a[i]=300000;
                }
        System.out.println(m+n-ans);
        for (int i=0;i<m+n;i++)
            if(a[i]!=300000)
            System.out.print(a[i]+" ");
        in.close();
    }
}

追加:
import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.Set;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        Set<Integer> set=new LinkedHashSet<Integer>();
        int m=in.nextInt();
        int n=in.nextInt();
        for(int i=0;i<m+n;i++) {
            set.add(in.nextInt());
        }
        System.out.println(set.size());
        for(Integer i:set) {
            System.out.print(i+" ");
        }
        in.close();
    }
}