행렬의 곱셈이다. 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;
}