[알고리즘 C++]행렬의 곱셈

후이재·2020년 9월 11일
1

오늘의 문제

https://programmers.co.kr/learn/courses/30/lessons/12949

행렬의 곱셈

나의 풀이

#include <string>
#include <vector>

using namespace std;

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

모범 답안

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

vector<vector<int> >productMatrix(vector<vector<int> >A, vector<vector<int> >B)
{
    int Acol = A[0].size();
    int Arow = A.size();
    int Brow = B.size();
    int Bcol = B[0].size();
    vector<vector<int> >answer(Arow, vector<int>(Bcol));

    if (Acol == Brow) {
        for (int i = 0; i < Arow; i++) {
            for (int j = 0; j < Bcol; j++) {
                answer[i][j] = 0;
                for (int k = 0; k < Acol; k++) {

                    answer[i][j] += A[i][k]*B[k][j];

                }


            }
        }
    }

    return answer;
}

int main()
{
    vector<vector<int> >A{ { 1,2 },{ 2,3 } };
    vector<vector<int> >B{ { 2,3 },{ 3,4 } };
    vector<vector<int> > testAnswer = productMatrix(A, B);

    for (int i = 0; i<testAnswer.size(); i++)
    {
        for (int j = 0; j<testAnswer[i].size(); j++)
            cout << testAnswer[i][j] << " ";
        cout << "\n";
    }
}

배울 점

  • 그려놓고 풀었으면 더 빨리 풀었을지도 모른다 반복문 인덱스에서 좀 헷갈렸다.
profile
공부를 위한 벨로그

0개의 댓글