행렬의 곱셈

NJW·2021년 12월 29일
0

코테

목록 보기
4/170

들어가는 말

행렬의 곱셈이다. 2차원 벡터에 삽입하기 위해 벡터를 따로 만들고 각 요소는 덧셈으로 구한다는 것까지 구현했으나... 세 번째 반복문의 조건이 문제였다. 결국, 인터넷의 답을 찾아서 풀었다.

코드 설명

만들어진 벡터의 행은 arr1의 행과 같으니 첫 번째 반복문의 조건은 i가 0부터 arr1의 행까지로 한다. 여기서 2차원 벡터에 넣어줄 1차원 벡터를 정의하다. 두 번째 반복문은 arr2의 열까지 반복하는 것으로 1차원 벡터의 각 요소를 넣을 a를 초기화 한다. 세 번째 반복문은 각 요소를 구해서 더해주는데, 조건문은 현재 i(첫 번째 반복문의 변수)의 열 크기다. 인덱스를 조심한다. 그렇게 해서 2차원 벡터에 1차원 벡터 v를 넣으면 된다.

코드

#include <string>
#include <vector>

using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
    vector<vector<int>> answer;
    
    for(int i=0; i<arr1.size(); i++){
        vector<int> v;
        for(int j=0; j<arr2[0].size(); j++){
            int a = 0;
            for(int k=0; k<arr1[i].size(); k++){
                a = a + arr1[i][k] * arr2[k][j];
            }
            v.push_back(a);
        }
        answer.push_back(v);
        
    }

    return answer;
}
profile
https://jiwonna52.tistory.com/

0개의 댓글