알고리즘
[프로그래머스] 행렬의 곱셈 - lv2
minkang
2021. 1. 21. 01:08
programmers.co.kr/learn/courses/30/lessons/12949
코딩테스트 연습 - 행렬의 곱셈
[[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]]
programmers.co.kr
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++) { // 두번째의 열 갯수
answer[i][j] = solve(i, j, arr1, arr2);
}
}
return answer;
}
private int solve(int i, int j, int[][] arr1, int[][] arr2) {
int sum = 0;
// i는 행 시작 , j는 열 시작
for(int k=0; k<arr1[0].length; k++) {
sum = arr1[i][k]*arr2[k][j] + sum;
}
return sum;
}
}
소요시간 : 20분
행렬의 곱셈을 구하는 문제이다.
arr1의 행의 크기와 arr2의 열의 크기로 answer 2차원 배열을 만들고
answer의 각 인덱스의 값을 solve 함수로 구하였다.
solve에서는 arr1의 시작 행위치 i, arr2의 시작 열 위치 j를 받아와서 arr1의 열 갯수만큼 반복하여 sum 값을 구했다.