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

YH·2024년 1월 6일
0

문제

행렬의 곱셈 : 문제 링크


문제 분석

  • 2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성

  • 제한 사항

  • 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하이다.
  • 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수이다.
  • 곱할 수 있는 배열만 주어진다.
  • arr1에 arr2를 곱한 결과를 저장할 2차원 행렬 answer을 arr1의 행의 개수와 arr2의 열의 개수를 가지고 모든 요소를 0으로 초기화. 삼중 for loop를 사용하고, 첫번째 loop는 arr1의 행을, 두번째 loop는 arr2의 열을, 세번째 loop는 arr1의 열을 첫번째부터 마지막까지 순서대로 순회.
  • 두번째 loop 시작에서 정수형 변수 tmp를 0으로 초기화 하여 각 요소의 arr1[i][k] x arr2[k][j]를 계산하고 더하여 저장. 이후, 세번째 loop 탈출 시마다 answer[i][j] 위치에 tmp를 저장하는 것을 반복. 모든 loop 탈출 후, 최종적으로 저장된 answer을 return

풀이

#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 tmp = 0;
            for(int k = 0; k < arr1[0].size(); ++k) {
                tmp += (arr1[i][k] * arr2[k][j]);
            }
            answer[i][j] = tmp;
        }
    }
    return answer;
}
profile
Keep Recycling Your Dreams

0개의 댓글