알고리즘/프로그래머스
[프로그래머스] 행렬의 곱셈
쿠큭다스
2022. 4. 30. 15:39
728x90
문제 설명
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
- 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
- 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
- 곱할 수 있는 배열만 주어집니다.
입출력 예
풀이 방법
행렬의 곱셈에 대한 문제로 이 문제를 풀기 위해서는 행렬의 값이 구해지는 과정을 살펴봐야 한다.
예를 들어, arr1이 3x4 행렬, arr2가 4x2 행렬이라면 결과값은 arr1의 행인 3, arr2의 열인 2가 합쳐져 3x2 행렬이 된다.
arr[i][j]+=arr[i][k]*arr[k][j]; 라는 특성을 이용하여 풀 수 있다.
작성 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = new int[arr1.length][arr2[0].length];
for(int i=0;i<arr1.length;i++){
for(int j=0;j<arr2[0].length;j++){
for(int k=0;k<arr1[0].length;k++){
answer[i][j]+=arr1[i][k]*arr2[k][j];
}
}
}
return answer;
}
}
|
728x90