
문제 설명
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건- 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
- 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
- 곱할 수 있는 배열만 주어집니다.
입출력 예
arr1 | arr2 | return |
[[1, 4], [3, 2], [4, 1]] | [[3, 3], [3, 3]] | [[15, 15], [15, 15], [15, 15]] |
[[2, 3, 2], [4, 2, 4], [3, 1, 4]] | [[5, 4, 3], [2, 4, 1], [3, 1, 1]] | [[22, 22, 11], [36, 28, 18], [29, 20, 14]] |
코드
vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2)
{
// arr1의 행,열
int row_count1 = arr1.size();
int col_count1 = arr1[0].size();
// arr2의 열
int col_count2 = arr2[0].size();
// 2*3행렬 * 3*5행렬 = 2*5행렬
vector<vector<int>> answer(row_count1, vector<int>(col_count2));
int dump = 0;
for(int k = 0; k < col_count2; k++)
{
for(int i = 0 ; i < row_count1; i++)
{
for(int j = 0; j < col_count1; j++)
{
dump+=arr1[i][j]*arr2[j][k];
}
answer[i][k] = dump;
dump=0;
}
}
return answer;
}
'문제풀이(C++) > 프로그래머스[Level2]' 카테고리의 다른 글
[프로그래머스 Level2][C++] 최댓값과 최솟값 (0) | 2022.01.11 |
---|---|
[프로그래머스 Level2][C++] N개의 최소공배수 (0) | 2021.11.26 |
[프로그래머스 Level2][C++] 최솟값 만들기 (0) | 2021.11.04 |
[프로그래머스 Level2][C++] 올바른 괄호 (0) | 2021.11.03 |
[프로그래머스 Level2][C++] 피보나치 수 (0) | 2021.10.29 |