나만의 작은 도서관

문제 12949. 행렬의 곱셈 본문

프로그래머스 문제풀이/코드카타

문제 12949. 행렬의 곱셈

pledge24 2024. 7. 11. 23:21

문제 링크

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

난이도 : Lv.2

 

문제 요약 설명

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

입력

  • 2차원 행렬 arr1
  • 2차원 행렬 arr2

입력 제한

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

입력 예제

// input
[[1, 4], [3, 2], [4, 1]]  // arr1
[[3, 3], [3, 3]]          // arr2

// ans
[[15, 15], [15, 15], [15, 15]]

 

풀이 방식

이번 문제는 그저 행렬의 곱셈을 아는 지 물어보는 수학 구현 문제이다. 풀이는 필요없다.

 

정답 코드 

더보기
#include <string>
#include <vector>

using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
    vector<vector<int>> answer;
    answer.resize(arr1.size(), vector<int>(arr2[0].size()));
    
    for(int arr1_r = 0; arr1_r < arr1.size(); arr1_r++){
        for(int arr2_c = 0; arr2_c < arr2[0].size(); arr2_c++){
            for(int arr1_c = 0; arr1_c < arr1[0].size(); arr1_c++){
                answer[arr1_r][arr2_c] += arr1[arr1_r][arr1_c] * arr2[arr1_c][arr2_c];
            }
        }
              
    }
    
    return answer;
}