본문 바로가기

Algorithm/Baekjoon BOJ

[백준][C++] 2740: 행렬 곱셈

반응형

 

https://www.acmicpc.net/problem/2740

 

2740번: 행렬 곱셈

첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개

www.acmicpc.net

 

 

 

 


- 문제

 

  N * M 행렬과 M * K 행렬이 주어지면 행렬 곱셈을 이용해서 N * K 행렬을 만드는 문제다.

 

 


- 해설

 

실버 5 문제라 쉽게 풀릴 줄 알았는데, 생각보다 시간이 많이 걸렸다.

 

 

 

 


- 풀이

#include <iostream>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int N, M, K, temp;
    int A[101][101], B[101][101], answer[101][101];

    cin >> N >> M;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            cin >> A[i][j];
        }
    }
    cin >> M >> K;
    for (int i = 0; i < M; i++)
    {
        for (int j = 0; j < K; j++)
        {
            cin >> B[i][j];
        }
    }

    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < K; j++) // N * K 행렬을 만들어야 함
        {
            for (int k = 0; k < M; k++) // 각 구역마다 M번 만큼 반복해야 함
            {
                answer[i][j] += A[i][k] * B[k][j];
            }
            cout << answer[i][j] << ' ';
        }
        cout << '\n';
    }
    // or
    // for (int i = 0; i < N; i++)
    // {
    //     for (int j = 0; j < K; j++)
    //     {
    //         cout << answer[i][j] << ' ';
    //     }
    //     cout << '\n';
    // }

    return 0;
}

 

 


- 새롭게 알게 된 점

 

 

반응형

'Algorithm > Baekjoon BOJ' 카테고리의 다른 글

[백준][C++] 11286: 절대값 힙  (0) 2022.12.09
[백준][C++] 11401: 이항 계수 3  (0) 2022.12.08
[백준][C++] 5430: AC  (0) 2022.11.21
[백준][C++] 1931: 회의실 배정  (0) 2022.11.15
[백준][C++] 13305: 주유소  (0) 2022.11.14