빠에야는 개발중

행렬의 곱셈 본문

공부/알고리즘 문제

행렬의 곱셈

빠에야좋아 2018. 3. 4. 13:50

행렬의 곱셈은, 곱하려는 두 행렬의 어떤 행과 열을 기준으로, 좌측의 행렬은 해당되는 행, 우측의 행렬은 해당되는 열을 순서대로 곱한 값을 더한 값이 들어갑니다. 행렬을 곱하기 위해선 좌측 행렬의 열의 개수와 우측 행렬의 행의 개수가 같아야 합니다. 곱할 수 있는 두 행렬 A,B가 주어질 때, 행렬을 곱한 값을 출력하는 productMatrix 함수를 완성해 보세요.


행렬의 곱셈을 이론적으로는 알고 있었는데 코드로 구현하려고 하니 어딘가 부족한 부분이 느껴졌다.

2차원 행렬에서 생각이 굳어 진행을 못하고 있다가 다른 사람이 짠 코드를 보니 3차원 행렬로 해결했더라.

틀을 깨지 못한 것 같아서 아쉬웠다. 손으로 직접 테스트 케이스를 작성해봤으면 빨리 눈치챘을지도 모른다. 자기과신...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class ProductMatrix {
    public int[][] productMatrix(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 c = new ProductMatrix();
        int[][] a = { { 12 }, { 23 } };
        int[][] b = { { 34 }, { 56 } };
      // 아래는 테스트로 출력해 보기 위한 코드입니다.
      System.out.println("행렬의 곱셈 : " + c.productMatrix(a, b));
    }
}
 
cs


'공부 > 알고리즘 문제' 카테고리의 다른 글

멀리 뛰기  (0) 2018.03.06
시저 암호  (0) 2018.03.05
정수 내림차순으로 배치하기  (0) 2018.03.04
최솟값 만들기  (0) 2018.03.04
소수의 개수 구하기  (0) 2018.02.26
Comments