Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 두 배열의 교집합 구하기: Intersect 메서드 완벽 가이드

C#에서 두 배열의 교집합(공통 요소)을 구하는 가장 간단한 방법은 LINQ의 Intersect 메서드를 사용하는 것입니다. 이 메서드는 System.Linq 네임스페이스에 정의된 확장 메서드로, 두 컬렉션에서 공통으로 포함된 요소들만 추출하여 반환합니다.

Intersect 메서드란?

Intersect는 집합 연산 중 하나로, 두 시퀀스를 비교해 양쪽 모두에 존재하는 요소만 골라냅니다. 반환되는 결과에는 다음과 같은 특징이 있습니다.

  • 두 배열에 공통으로 있는 요소만 반환됩니다.
  • 결과에는 중복 요소가 자동으로 제거됩니다.
  • 기본적으로 해당 타입의 기본 같음 비교자(Default Equality Comparer)를 사용합니다.

기본 사용 예제

먼저 교집합을 구할 두 개의 배열을 준비합니다.

int[] arr1 = { 44, 76, 98, 34 };
int[] arr2 = { 24, 98, 44, 55, 47, 86 };

이제 Intersect 메서드를 호출하여 두 배열의 교집합을 구합니다.

var intersect = arr1.Intersect(arr2);

전체 코드 예제

다음은 위 내용을 하나로 합친 전체 실행 코드입니다.

using System;
using System.Linq;

class Program {
    static void Main() {
        int[] arr1 = { 44, 76, 98, 34 };
        int[] arr2 = { 24, 98, 44, 55, 47, 86 };

        var intersect = arr1.Intersect(arr2);

        foreach (int res in intersect) {
            Console.WriteLine(res);
        }
    }
}

실행 결과

위 코드를 실행하면 두 배열에 모두 포함된 값인 4498이 출력됩니다.

44
98

추가 팁: 문자열 배열의 교집합

문자열 배열을 비교할 때는 대소문자 처리에 주의해야 합니다. 대소문자를 구분하지 않고 비교하려면 StringComparer.OrdinalIgnoreCase를 두 번째 인수로 전달하면 됩니다.

string[] fruits1 = { "Apple", "Banana", "Cherry" };
string[] fruits2 = { "apple", "cherry", "Mango" };

var result = fruits1.Intersect(fruits2, StringComparer.OrdinalIgnoreCase);
// 결과: Apple, Cherry

또한 Intersect는 지연 실행(Lazy Evaluation) 방식으로 동작하므로, 실제로 결과를 순회할 때(예: foreach) 연산이 수행된다는 점도 기억해 두면 좋습니다.