행렬의 곱셈
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12949
접근 방식
행렬의 곱은 수학적 연산이다.
2차원 배열인 a와 b가 있을때, a=2x2, b=2x1이라고 가정해보자.
계산은 a[0][0] * b[0][0] + a[0][1] * b[0][1]
과 같은 계산이 이루어지고, 해당 계산에 대한 결과는 새로운 c=2x1 배열에 저장된다.
제한 조건이 곱할 수 있는 배열만 주어지기 때문에, 무조건 계산이 된다는 가정하에 로직을 작성하면 된다.
결과
소스 코드
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;
}
}
새로운 배열의 크기는 arr1의 길이와 arr2의 1차원배열의 길이로 정해진다.
그리고, arr2의 2차원 배열의 길이는 arr1의 1차원 배열의 길이과 같다.
다른 접근 방식
없음.
느낀 점
행렬 계산은 간단하지만, 가끔 생각이 안 나는 경우가 있다.
주기적으로 한 번씩 생각해 볼 필요가 있다.