알고리즘/프로그래머스
프로그래머스 Lv.2) 행렬의 곱셈
Zin0_0
2020. 5. 21. 16:48
반응형
행렬의 곱셈
코딩테스트 연습 - 행렬의 곱셈
[[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
풀이
행렬의 곱셈에 대해 배열의 곱셈이라고 이해하고 문제이해를 5분정도 못했다... ㅎㅎㅎㅎ
아무튼 행렬의 곱셈을 구글링해서 곱셈법을 다시 배웠다.. ㅠㅠ
1. 배열 arr1과 arr2를 통해 답이되는 answer 배열을 만들어 준다.
1-1. 이때 크기는 arr1의 행, arr2의 열이 된다. (행렬의 연산 특징)
2. 각각 배열의 idx에 대해 행렬 곱셈식을 구해 더해준다.
코드
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = new int[arr1.length][arr2[0].length];
for(int i=0; i<answer.length; i++) { // 행
for(int j=0; j<answer[i].length; j++) { // 열
//answer[i][j] = arr1은 행이 i, arr2는 열이 j, 움직이는거는 둘이 공통되는 부분의 길이
for(int idx =0; idx<arr1[i].length; idx++) {
answer[i][j] += arr1[i][idx] * arr2[idx][j];
}
}
}
return answer;
}
}
반응형