반응형
1. 문제 이해하기
두 배열의 합집합을 구한다는 것은 두 배열에 있는 모든 고유한(중복되지 않는) 요소를 하나의 배열에 넣는 것입니다. 예를 들어, 배열 arr1 = {1, 2, 3}과 arr2 = {2, 3, 4}가 주어진다면 합집합은 {1, 2, 3, 4}가 됩니다. 즉, 두 배열에서 중복되는 숫자를 제외하고 모든 숫자를 포함합니다.
2. 자바의 HashSet 이해하기
합집합을 구할 때 중복을 없애야 하므로, 자바의 HashSet 클래스를 사용하면 편리합니다. HashSet은 고유한 값만 저장하는 자료구조로, 중복된 값을 자동으로 제거해줍니다.
3. 프로그램의 단계별 설계
- 두 배열을 정의하기: 우선 두 개의 정수 배열을 정의합니다.
- HashSet을 사용하여 중복 제거하기: HashSet을 만들어 두 배열의 모든 요소를 넣습니다. HashSet에 추가되는 과정에서 중복된 값은 자동으로 제거됩니다.
- 결과를 배열로 변환하기: 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. 코드 설명
- HashSet<Integer> unionSet = new HashSet<>();
HashSet을 생성하여 unionSet이라는 이름을 붙였습니다. 이 HashSet은 고유한 값만 저장하므로 중복된 값을 자동으로 제거해줍니다. - 첫 번째 배열과 두 번째 배열의 요소를 HashSet에 추가하기
각 배열의 모든 요소를 HashSet에 넣어줍니다. 예를 들어, 배열 arr1 = {1, 2, 3, 4}와 arr2 = {3, 4, 5, 6}이 있으면, unionSet에는 {1, 2, 3, 4, 5, 6}이 저장됩니다. 중복된 값 3과 4는 HashSet에 의해 자동으로 제거됩니다. - HashSet을 배열로 변환하기
HashSet에 저장된 고유한 값을 배열로 변환하기 위해 int[] unionArray = new int[unionSet.size()];로 배열을 만들고, for문을 사용해 unionSet의 각 값을 unionArray에 옮깁니다. - 결과 출력
Arrays.toString(unionArray)를 사용해 합집합 배열을 문자열 형태로 변환하여 출력합니다.
6. 코드 실행 결과
위의 예제 코드에서 배열 arr1 = {1, 2, 3, 4}와 arr2 = {3, 4, 5, 6}을 사용하면 출력 결과는 다음과 같습니다:
합집합: [1, 2, 3, 4, 5, 6]
이렇게 두 배열의 고유한 요소들을 합친 결과를 얻을 수 있습니다.
7. 요약
이 프로그램을 통해 HashSet을 사용하여 간단히 두 배열의 합집합을 구할 수 있습니다. HashSet의 특성을 활용하여 중복 요소를 제거할 수 있으므로, 자바의 컬렉션 프레임워크 사용법을 익히는 데도 좋은 예제입니다.
반응형
'자바(Java)' 카테고리의 다른 글
두 행렬의 곱셈을 위한 Java 프로그램 (2) | 2024.11.13 |
---|---|
두 행렬의 합집합을 찾는 자바 프로그램 (0) | 2024.11.12 |
배열에서 가장 작은 요소와 가장 큰 요소를 찾는 Java 프로그램 (1) | 2024.11.10 |
자바에서 큰 수의 팩토리얼을 계산하는 프로그램 (1) | 2024.11.09 |
자바에서 이진수(binary)를 십진수(decimal)로 변환하는 프로그램 (1) | 2024.11.08 |