[c++/프로그래머스] 행렬의 곱셈

조히·2023년 6월 8일
0

PS

목록 보기
74/82

문제 링크

행렬의 곱셈

풀이

행렬의 곱셈을 통해 2(행) X 3(열), 3 X 5 => 2 X 5의 행렬이 만들어짐 (첫번째 행렬의 열과 두번째 행렬의 행은 크기가 같아야 함)

이 행렬에서 (1,2)값을 구하고 싶다면? (0부터 시작하는 인덱스)
[1][0]*[0][2] + [1][1]*[1][2] + [1][2]*[2][2]

  1. arr1의 행이 i개, 열이 k개, arr2의 행이 k개, 열이 j개 일 때 행렬의 곱셈 결과는 i의 행과 j의 열이 만들어진다. 그렇게 answer의 사이즈를 미리 정해둔다.
  2. 하나 하나씩 계산을 해준다.
    2-1. arr1[i][k]*arr2[k][k]값을 모두 더해주면 answer[i][j]의 값이 나온다

코드

#include <string>
#include <vector>

using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
    vector<vector<int>> answer(arr1.size(), vector<int>(arr2[0].size()));
    
    for(int i=0;i<answer.size();i++) // 행
    {
        for(int j=0;j<answer[i].size();j++) // 열
        {
            int tmp = 0;
            for(int k=0;k<arr2.size();k++)
            {
                tmp += arr1[i][k] * arr2[k][j];
            }
            answer[i][j] = tmp;
        }
    }
    return answer;
}
profile
Juhee Kim | Game Client Developer

0개의 댓글