행렬의 덧셈과 뺄셈
성사 조건
두 행렬의 행과 열의 개수가 같아야 한다.
자바의 2차원 배열
행 가로(행과) row
열 세로 column
int[][] arr = new int[2][3];
System.out.println(Arrays.deepToString(arr));
[[0, 0, 0], [0, 0, 0]]
int[][] arr2 = {{1, 2}, {1, 2}, {1, 2}}; //3행 2열
System.out.println(Arrays.deepToString(arr2));
[[1, 2], [1, 2], [1, 2]]
row 값으로 행렬의 덧셈 식
new int[4][5]가 주어졌을 때 어떤 모양이 되는 지 파악하는 것이 중요하다. 4행 5열
int[][] a = new int[2][3]
[[0, 0][0, 1][0, 2]] + [[0, 0][0, 1][0, 2]] 각 행끼리 더한 값을 모아서 결과를 낸다.
[[1, 0][1, 1][1, 2]] + [[1, 0][1, 1][1, 2]]
public static void main(String[] args) {
int[][] a = {{1, 1, 1}, {1, 1, 1}};
int[][] b = {{3, 3, 3}, {3, 3, 3}};
int[][] result = new int[2][3];
for (int i = 0; i < a.length; i++) {
int[] row = new int[a[0].length];
for (int j = 0; j < a[i].length; j++) {
row[j] = a[i][j] + b[i][j];
}
result[i] = row;
}
System.out.println(Arrays.deepToString(result));
}
행과 열의 개수로 구하는 식
public static void main(String[] args) {
int[][] arr = new int[2][3];
System.out.println(Arrays.deepToString(arr));
int[][] a = {{1, 1, 1}, {1, 1, 1}};
int[][] b = {{3, 3, 3}, {3, 3, 3}};
int[][] result = new int[2][3];
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
result[i][j] = a[i][j] + b[i][j];
}
}
System.out.println(Arrays.deepToString(result));
}
행렬의 곱셈
행렬의 곱이 성사 조건
2행2 열 행렬과 2행 2열 행렬 곱 모양 → 2행 2열 행렬 결과
2행3열 행렬과 3행2열 행렬 곱 모양 →2행 3열 행렬 결과
조건 : 첫 번째 행렬의 열과 두 번째 행렬의 행이 같아야 한다.
결과: 첫 번째 행렬의 행과 두 번째 행렬의 열을 가진다
만약 arr1이 3행2열이고 arr2가 2행 5열이면 결과 행렬은 3행 5열은 가지게 된다.
풀이
public static void main(String[] args) {
int[][] arr1 = {{1, 2, 3}, {4, 5, 6}}; //2행 3열
int[][] arr2 = {{1, 1}, {1, 1}, {1, 1}}; //3행 2열 -> 결과 2행 2열이 나온다.
//결과 [[6,6][15,15]]
int[][] result = new int[arr1.length][arr2[0].length];
System.out.println(Arrays.deepToString(result));
//arr1의 행과
for(int i = 0 ; i < arr1.length ; ++i){
//arr2의 열의 결과
for(int j = 0 ; j < arr2[0].length ; ++j){
for(int k = 0 ; k < arr1[0].length ; ++k) {
result[i][j] += arr1[i][k] * arr2[k][j];
}
}
}
System.out.println(Arrays.deepToString(result));
}
arr1의 열k 와 arr2 행k의 곱의 합이 result[i][j] 의 값이 된다.
참고 자료
'자바 자료구조 알고리즘' 카테고리의 다른 글
자바 해시 테이블 자료구조 (0) | 2023.01.15 |
---|---|
자바의 스택과 큐 (0) | 2023.01.07 |