본문 바로가기
TIP

행렬의 곱 구현하기

by GREEN나무 2025. 4. 17.
728x90

아래는 각 언어별로 **두 개의 2차원 배열(행렬)**이 주어졌을 때 **행렬의 곱(Matrix Multiplication)**을 구현한 예제입니다.


✅ 전제 조건

  • 행렬 A: 크기 m x n
  • 행렬 B: 크기 n x p
  • 결과 행렬 C: 크기 m x p

조건: A의 열 수 == B의 행 수여야 행렬 곱이 가능합니다.


🔹 C

#include <stdio.h>

void multiplyMatrices(int A[3][2], int B[2][4], int C[3][4]) {
    // A: 3x2, B: 2x4, C: 3x4
    for (int i = 0; i < 3; i++) {         // 행
        for (int j = 0; j < 4; j++) {     // 열
            C[i][j] = 0;
            for (int k = 0; k < 2; k++) { // A의 열 == B의 행
                C[i][j] += A[i][k] * B[k][j];
            }
        }
    }
}

🔹 C++

#include <iostream>
#include <vector>
using namespace std;

vector<vector<int>> multiplyMatrices(const vector<vector<int>>& A, const vector<vector<int>>& B) {
    int m = A.size(), n = A[0].size(), p = B[0].size();
    vector<vector<int>> C(m, vector<int>(p, 0));

    for (int i = 0; i < m; i++) {
        for (int j = 0; j < p; j++) {
            for (int k = 0; k < n; k++) {
                C[i][j] += A[i][k] * B[k][j];
            }
        }
    }
    return C;
}

🔹 C#

int[,] MultiplyMatrices(int[,] A, int[,] B) {
    int m = A.GetLength(0), n = A.GetLength(1), p = B.GetLength(1);
    int[,] C = new int[m, p];

    for (int i = 0; i < m; i++) {
        for (int j = 0; j < p; j++) {
            for (int k = 0; k < n; k++) {
                C[i, j] += A[i, k] * B[k, j];
            }
        }
    }
    return C;
}

🔹 Java

public int[][] multiplyMatrices(int[][] A, int[][] B) {
    int m = A.length, n = A[0].length, p = B[0].length;
    int[][] C = new int[m][p];

    for (int i = 0; i < m; i++) {
        for (int j = 0; j < p; j++) {
            for (int k = 0; k < n; k++) {
                C[i][j] += A[i][k] * B[k][j];
            }
        }
    }
    return C;
}

🔹 JavaScript

function multiplyMatrices(A, B) {
    const m = A.length, n = A[0].length, p = B[0].length;
    const C = Array.from({ length: m }, () => Array(p).fill(0));

    for (let i = 0; i < m; i++) {
        for (let j = 0; j < p; j++) {
            for (let k = 0; k < n; k++) {
                C[i][j] += A[i][k] * B[k][j];
            }
        }
    }
    return C;
}

🔹 Python

def multiply_matrices(A, B):
    m, n, p = len(A), len(A[0]), len(B[0])
    C = [[0 for _ in range(p)] for _ in range(m)]

    for i in range(m):
        for j in range(p):
            for k in range(n):
                C[i][j] += A[i][k] * B[k][j]
    return C

✔️ 테스트 예시 (A: 2x3, B: 3x2)

A = [
    [1, 2, 3],
    [4, 5, 6]
]

B = [
    [7, 8],
    [9, 10],
    [11, 12]
]

결과:
[
    [58, 64],
    [139, 154]
]

 

'TIP' 카테고리의 다른 글

게임화면 크기 설정  (1) 2025.04.07
플렛폼이란  (0) 2025.04.03
유저 인증 - OAuth2  (0) 2025.03.24
연결된 포트 끊기  (0) 2025.03.10
깃헙 기본 브릿지 바꾸기  (0) 2025.02.12