[프로그래머스] 행렬의 곱셈 c++

2025. 3. 26. 12:20코딩테스트

문제 설명
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.

제한 조건
행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
곱할 수 있는 배열만 주어집니다.


문제 해결 방법

행렬의 곱셈

- 행렬의 크기를 초기화 한다 [첫번째 행렬의 행] x [두번째 행렬의 열]

- 3중 for문을 이용한다. (첫번째 배열, 두번째 배열, 계산]

- i는 세로 길이, j는 가로 길이

#include <string>
#include <vector>

using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
   vector<vector<int>> answer(arr1.size(), vector<int>(arr2[0].size(), 0));

    
    for(int i=0; i<arr1.size();i++)
    {
        for(int j=0;j<arr2[0].size();j++)
        {
            int sum=0;
            for(int k=0;k<arr2.size();k++)
            {
                answer[i][j] +=arr1[i][k]*arr2[k][j];
            }
        }
    }
    return answer;
}

https://school.programmers.co.kr/learn/courses/30/lessons/12949