본문 바로가기
알고리즘

행렬 곱셈

by kcj3054 2022. 6. 11.

문제

풀이

#include <iostream>
#include <vector>    
#include <algorithm>
#include <string>

using namespace std;
int arr1[101][101];
int arr2[101][101];
int result[101][101];

int n = 0, m = 0, k = 0;

int func(int a, int b){
    // result[a][b]에 해당하는 값을 반환
    for (int k = 0; k < m; k++)
        result[a][b] += arr1[a][k] * arr2[k][b];

    return result[a][b];
}

int main()
{
    cin >> n >> m;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            cin >> arr1[i][j];
    }

    cin >> m >> k;
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < k; j++)
            cin >> arr2[i][j];
    }

    //n행 k열 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < k; j++)
        {
            result[i][j] = func(i,j);
        }
    }

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < k; j++)
            cout << result[i][j] << " ";
        cout << '\n';
    }

    //n k 
    return 0;
}
  • 풀이 -> n * m 행렬 과 m * k행렬 결과는 n * k 그런데 가운데 m에 대한 연산을 해주면된다 func함수를 잘 보자.

'알고리즘' 카테고리의 다른 글

백준 소형기관차, (c++) 2616  (0) 2022.01.13
백준 이분그래프 (c++)  (0) 2022.01.13
백준 오큰수  (1) 2021.12.25
백준 쿼드트리 (c++, recursion)  (0) 2021.12.24
백준 피보나치 수 2747  (0) 2021.12.22