bdfgdfg

[레벨 2] 행렬의 곱셈 본문

코딩테스트/프로그래머스

[레벨 2] 행렬의 곱셈

marmelo12 2021. 9. 17. 16:28
반응형
#include <string>
#include <vector>
using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
    int idx = arr1[0].size();
    int row = arr1.size();
    int col = arr2[0].size();
    vector<vector<int>> answer(row, vector<int>(col, 0));
    for (int i = 0; i < row; ++i)
    {
        for (int j = 0; j < col; ++j)
        {
            for (int k = 0; k < idx; ++k)
            {
                answer[i][j] += arr1[i][k] * arr2[k][j];
            }
        }
    }
    return answer;
}

비효율적이지 않나 싶었지만 대부분 거의 나와 똑같은 코드더라.

 

행렬의 곱셈에서

arr1        arr2

2 3 3    5 4 3

4 2 4    2 4 1

3 1 4    3 1 1

 

첫번째 계산은 2 * 5 + 3 * 2 + 3 * 3 = 22.

즉 계산이 진행될 때 arr1의 행이 고정이 되어야하고 arr2의 열이 고정이 되어야한다. 두개의 반복문 만으로는 저장이 어렵기 때문에 새로운 k변수를 통해서 고정된 행과 열에서 다음 값의 계산을 진행한다.

반응형

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

[레벨 2] 최댓값과 최솟값  (0) 2021.09.20
[레벨 2 ] 최솟값 만들기  (0) 2021.09.17
[레벨 1] 비밀지도 - 비트연산  (0) 2021.09.12
[레벨 1] 부족한 금액 계산하기  (0) 2021.09.09
[레벨 1] 2016년  (0) 2021.09.08
Comments