본문 바로가기
자바(Java)

두 배열의 합집합을 찾는 자바 프로그램

by 코딩하는 욤욤이 2024. 11. 11.
반응형

1. 문제 이해하기

두 배열의 합집합을 구한다는 것은 두 배열에 있는 모든 고유한(중복되지 않는) 요소를 하나의 배열에 넣는 것입니다. 예를 들어, 배열 arr1 = {1, 2, 3}과 arr2 = {2, 3, 4}가 주어진다면 합집합은 {1, 2, 3, 4}가 됩니다. 즉, 두 배열에서 중복되는 숫자를 제외하고 모든 숫자를 포함합니다.

 

2. 자바의 HashSet 이해하기

합집합을 구할 때 중복을 없애야 하므로, 자바의 HashSet 클래스를 사용하면 편리합니다. HashSet은 고유한 값만 저장하는 자료구조로, 중복된 값을 자동으로 제거해줍니다.

 

3. 프로그램의 단계별 설계

  1. 두 배열을 정의하기: 우선 두 개의 정수 배열을 정의합니다.
  2. HashSet을 사용하여 중복 제거하기: HashSet을 만들어 두 배열의 모든 요소를 넣습니다. HashSet에 추가되는 과정에서 중복된 값은 자동으로 제거됩니다.
  3. 결과를 배열로 변환하기: HashSet의 결과를 배열로 변환하여 합집합 배열을 얻습니다.

4. 예제 코드

import java.util.HashSet;
import java.util.Arrays;

public class UnionOfArrays {

    public static int[] findUnion(int[] arr1, int[] arr2) {
        // 1. HashSet을 사용하여 두 배열의 중복 제거된 합집합을 저장
        HashSet<Integer> unionSet = new HashSet<>();
        
        // 2. 첫 번째 배열의 모든 요소를 HashSet에 추가
        for (int num : arr1) {
            unionSet.add(num);
        }
        
        // 3. 두 번째 배열의 모든 요소를 HashSet에 추가
        for (int num : arr2) {
            unionSet.add(num);
        }
        
        // 4. HashSet을 배열로 변환
        int[] unionArray = new int[unionSet.size()];
        int index = 0;
        for (int num : unionSet) {
            unionArray[index++] = num;
        }
        
        return unionArray;
    }

    public static void main(String[] args) {
        int[] arr1 = {1, 2, 3, 4};
        int[] arr2 = {3, 4, 5, 6};
        
        // 합집합 배열 찾기
        int[] unionArray = findUnion(arr1, arr2);
        
        // 결과 출력
        System.out.println("합집합: " + Arrays.toString(unionArray));
    }
}

5. 코드 설명

  1. HashSet<Integer> unionSet = new HashSet<>();
    HashSet을 생성하여 unionSet이라는 이름을 붙였습니다. 이 HashSet은 고유한 값만 저장하므로 중복된 값을 자동으로 제거해줍니다.
  2. 첫 번째 배열과 두 번째 배열의 요소를 HashSet에 추가하기
    각 배열의 모든 요소를 HashSet에 넣어줍니다. 예를 들어, 배열 arr1 = {1, 2, 3, 4}와 arr2 = {3, 4, 5, 6}이 있으면, unionSet에는 {1, 2, 3, 4, 5, 6}이 저장됩니다. 중복된 값 3과 4는 HashSet에 의해 자동으로 제거됩니다.
  3. HashSet을 배열로 변환하기
    HashSet에 저장된 고유한 값을 배열로 변환하기 위해 int[] unionArray = new int[unionSet.size()];로 배열을 만들고, for문을 사용해 unionSet의 각 값을 unionArray에 옮깁니다.
  4. 결과 출력
    Arrays.toString(unionArray)를 사용해 합집합 배열을 문자열 형태로 변환하여 출력합니다.

6. 코드 실행 결과

위의 예제 코드에서 배열 arr1 = {1, 2, 3, 4}와 arr2 = {3, 4, 5, 6}을 사용하면 출력 결과는 다음과 같습니다:

합집합: [1, 2, 3, 4, 5, 6]

이렇게 두 배열의 고유한 요소들을 합친 결과를 얻을 수 있습니다.

 

7. 요약

이 프로그램을 통해 HashSet을 사용하여 간단히 두 배열의 합집합을 구할 수 있습니다. HashSet의 특성을 활용하여 중복 요소를 제거할 수 있으므로, 자바의 컬렉션 프레임워크 사용법을 익히는 데도 좋은 예제입니다.

반응형