C# - 배열 차집합, 서로 다른 요소 찾기

두개의 배열의 서로 다른 요소, 차집합을 찾는 방법을 소개합니다.

1. 특정 배열만 갖고 있는 요소 찾기

A, B 배열이 있을 때, A 배열에만 있고 B 배열에는 없는 요소를 찾는 방법입니다.

array1.Except(array2)는 array1에서 array2가 갖고 있지 않은 요소만 Enumerable로 리턴합니다. 결과 값은 foreach 등으로 접근할 수 있습니다.

using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            int[] arr1 = {1, 2, 3, 4, 5};
            int[] arr2 = {1, 2, 4, 8, 16};

            var result = arr1.Except(arr2);
            foreach (var n in result) {
                Console.WriteLine(n);
            }
        }
    }
}

Output:

3
5

2. 두 배열이 서로 갖고 있지 않은 요소들 찾기

HashSet.SymmetricExceptWith(array)는 HashSet의 요소들 중에 array에 있는 요소는 HashSet에서 제거하고, 없는 요소는 HashSet에 추가합니다.

아래 예제의 결과를 보면 arr1arr2가 서로 갖고 있지 않은 요소들만 result에 추가되었습니다.

using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            int[] arr1 = {1, 2, 3, 4, 5};
            int[] arr2 = {1, 2, 4, 8, 16};

            HashSet<int> set = new HashSet<int>(arr1);
            set.SymmetricExceptWith(arr2);

            int[] result = diff.ToArray();
            Console.WriteLine(string.Join(", ", result));
        }
    }
}

Output:

3, 5, 8, 16
Loading script...
codechachaCopyright ©2019 codechacha