반응형
1. 문제 이해하기
두 행렬의 합집합을 구한다는 것은 각 행렬의 모든 고유한(중복 없는) 요소를 하나의 리스트나 배열로 모은다는 뜻입니다. 예를 들어, 다음과 같은 두 행렬이 있다고 가정해봅시다.
matrix1 = {
{1, 2, 3},
{4, 5, 6}
}
matrix2 = {
{4, 5, 6},
{7, 8, 9}
}
이 두 행렬의 합집합은 {1, 2, 3, 4, 5, 6, 7, 8, 9}입니다. 각 행렬의 모든 요소를 모으되, 중복 요소는 하나로 유지합니다.
2. 자바의 HashSet 사용 이해하기
합집합을 구할 때 중복을 제거해야 하므로, HashSet을 사용하면 중복된 요소를 자동으로 제거할 수 있습니다. HashSet에 두 행렬의 모든 요소를 추가한 후 이를 배열로 변환하여 합집합 결과를 만들 수 있습니다.
3. 프로그램 설계
다음은 프로그램을 구현하는 단계입니다.
- 두 개의 행렬을 정의합니다.
- HashSet을 생성하여 두 행렬의 모든 요소를 추가합니다.
- HashSet을 배열로 변환하여 결과를 반환합니다.
4. 예제 코드 작성하기
import java.util.HashSet;
import java.util.Arrays;
public class UnionOfMatrices {
public static int[] findUnion(int[][] matrix1, int[][] matrix2) {
// 1. HashSet을 사용하여 두 행렬의 고유한 값들을 저장할 공간 생성
HashSet<Integer> unionSet = new HashSet<>();
// 2. 첫 번째 행렬의 모든 요소를 HashSet에 추가
for (int[] row : matrix1) {
for (int num : row) {
unionSet.add(num);
}
}
// 3. 두 번째 행렬의 모든 요소를 HashSet에 추가
for (int[] row : matrix2) {
for (int num : row) {
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[][] matrix1 = {
{1, 2, 3},
{4, 5, 6}
};
int[][] matrix2 = {
{4, 5, 6},
{7, 8, 9}
};
// 합집합 배열 찾기
int[] unionArray = findUnion(matrix1, matrix2);
// 결과 출력
System.out.println("합집합: " + Arrays.toString(unionArray));
}
}
5. 코드 설명
- HashSet<Integer> unionSet = new HashSet<>();
HashSet을 생성하여 unionSet이라는 이름을 붙였습니다. 이 HashSet은 고유한 값만 저장하므로 중복된 값을 자동으로 제거합니다. - 첫 번째 행렬의 모든 요소를 HashSet에 추가하기
이중 for 문을 사용하여 첫 번째 행렬 matrix1의 모든 요소를 unionSet에 추가합니다. - 두 번째 행렬의 모든 요소를 HashSet에 추가하기
동일한 방식으로 matrix2의 모든 요소도 unionSet에 추가합니다. 이 과정에서 중복된 값은 자동으로 제거됩니다. - HashSet을 배열로 변환하기
HashSet의 결과를 배열로 변환하기 위해 int[] unionArray = new int[unionSet.size()];를 선언합니다. 이후 for 문을 사용하여 unionSet의 각 요소를 unionArray에 넣습니다. - 결과 출력
Arrays.toString(unionArray)를 사용해 합집합 배열을 문자열 형태로 변환하여 출력합니다.
6. 실행 결과
위 예제 코드에서 matrix1 = {{1, 2, 3}, {4, 5, 6}}과 matrix2 = {{4, 5, 6}, {7, 8, 9}}을 사용하면 다음과 같은 출력이 나타납니다.
합집합: [1, 2, 3, 4, 5, 6, 7, 8, 9]
7. 요약
이 프로그램은 두 행렬의 모든 고유한 요소를 하나의 배열로 합치는 방법을 보여줍니다. HashSet을 활용하면 중복 요소를 쉽게 제거할 수 있어, 합집합을 구할 때 유용합니다.
반응형
'자바(Java)' 카테고리의 다른 글
버블 정렬 Java 프로그램 쉽게 이해하기 (1) | 2024.11.14 |
---|---|
두 행렬의 곱셈을 위한 Java 프로그램 (2) | 2024.11.13 |
두 배열의 합집합을 찾는 자바 프로그램 (0) | 2024.11.11 |
배열에서 가장 작은 요소와 가장 큰 요소를 찾는 Java 프로그램 (1) | 2024.11.10 |
자바에서 큰 수의 팩토리얼을 계산하는 프로그램 (1) | 2024.11.09 |