Algorithm 행렬의 곱셈

행렬의 곱셈

algo

A,B 2개의 행렬의 곱을 구하여라

  • answer를 선언해준다.
    • 행은 A.length, 열은 B[0].length이다 (2x3) * (3x2) = (2x2) 배열이 나오기 때문이다.
  • 3중 for문을 사용하여서 값들을 answer에다가 저장한다.
    • answer[0][0] = A[0][0]*B[0][0] + A[0][1]*B[1][0] + A[0][2]*B[2][0]
    • answer[0][1] = A[0][0]*B[0][1] + A[0][1]*B[1][1] + A[0][2]*B[2][1]
    • answer[1][0] = A[1][0]*B[1][0] + A[1][1]*B[1][0] + A[1][2]*B[2][0]
    • answer[1][1] = A[1][0]*B[1][1] + A[1][1]*B[1][1] + A[1][2]*B[2][1]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package productMatrix;

public class ProductMatrix {

public int[][] Matrix(int[][] A, int[][] B) {
int[][] answer = new int[A.length][B[0].length];

for (int i = 0; i < answer.length; i++) {
for (int j = 0; j < answer[0].length; j++) {
for (int k = 0; k < A[0].length; k++) {
answer[i][j] += A[i][k] * B[k][j];
}
}
}

return answer;
}

public static void main(String[] args) {
ProductMatrix pm = new ProductMatrix();
int[][] a = { { 1, 2, 3 }, { 4, 5, 6 } };
int[][] b = { { 1, 1 }, { 1, 1 }, { 1, 1 } };
System.out.println(pm.Matrix(a, b));
}
}


Share