반응형
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12949
문제
개념 및 코드 풀이
사실 행렬의 곱셈에 대해서만 기억을 한다면 진행을 할 수 있습니다.
하지만 까먹어도 입출력 예시를 보시면 어떻게 계산이 되는지에 대해서 유추도 가능은 합니다.
/*
행렬의 곱
(행 * 열) * (행 * 열) = 행 * 열
가로로 첫번째 행렬의 열들과 두번째 행렬의 행이 곱해진다는 것을 알아야 함.
ex)
1 2 5 6
3 4 7 8
의 두행렬의 곱셈은
1*5+2*7 1*6+2*8
3*5+4*7 3*6+4*8 이 된다.
사실 행렬의 곱셈 자체를 공식을 알게 된다면 편하다. 물론 몰라도 입출력 예시 2번째를 보게 되면 알 수 있다.
5행 2열 2행 5열 행렬을 곱셈하면 5행5열인 행렬이 되는것입니다.
*/
#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
vector<vector<int>> answer;
vector<int> col;
int sum =0;
for(int i = 0; i < arr1.size();i++){
col.clear();
for(int j = 0; j < arr2[0].size(); j++){
sum = 0;
for(int k = 0;k< arr1[0].size(); k++){
sum += arr1[i][k] * arr2[k][j];
}
// cout<<sum <<" ";
col.push_back(sum);
}
answer.push_back(col);
}
return answer;
}
사실 반복문 arr2[0]과 arr[1]을 바꿔적어가지고 cout<<sum<<" "을 하면서 디버깅했었습니다 :)
반응형
'알고리즘 > c++ 프로그래머스' 카테고리의 다른 글
[프로그래머스] 의상 c++ (코드,풀이방법) (2) | 2023.05.13 |
---|---|
[프로그래머스] n^2배열 자르기 c++ (코드,해결과정, 오류수정) (1) | 2023.05.12 |
[프로그래머스] 연속 부분 수열 합의 개수 (0) | 2023.05.11 |
[프로그래머스] [1차]캐시 C++ (2018 카카오 블라인드 코테) (0) | 2023.05.11 |
[프로그래머스] h-index c++ (문제,풀이,코드) (0) | 2023.05.10 |
댓글