문제 설명
제한 사항 및 입출력 예제
개념
행렬의 곱셈을 구현하는 비교적 간단한 알고리즘이다. 행렬의 곱셈을 수행하려면 몇 가지 기본적인 규칙과 조건이 필요하다. 예를 들어, n1 * m1 행렬A, n2 * m2 행렬B가 존재할 때 두 행렬의 곱셈이 이루어지기 위해선
- 차원 일치: m1 = n2
- 결과 행렬의 크기: 행렬A * 행렬B = 행렬C일 때, 행렬 C의 크기는 n1 * m2
- 곱셈 규칙: C[i][j] = A[i][k] * B[k][j]
와 같은 조건들이 필요하다.
풀이
#include <vector>
using namespace std;
vector<vector<int>> solution(vector<vector<int>> ary1, vector<vector<int>> ary2)
{
vector<vector<int>> answer(ary1.size());
int sum = 0;
for (int i = 0; i < ary1.size(); ++i)
{
for (int j = 0; j < ary2[0].size(); ++j)
{
sum = 0;
for (int k = 0; k < ary1[0].size(); ++k)
sum += (ary1[i][k] * ary2[k][j]);
answer[i].push_back(sum);
}
}
return answer;
}
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 귤 고르기 with C++ (0) | 2023.06.28 |
---|---|
[프로그래머스] 소수 찾기 with C++ (0) | 2023.06.19 |
[프로그래머스] N개의 최소공배수 with C++ (0) | 2023.06.13 |
[프로그래머스] 예상 대진표 with C++ (0) | 2023.06.12 |
[프로그래머스] 구명보트 with C++ (0) | 2023.06.07 |