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 값을 구했다.
'알고리즘' 카테고리의 다른 글
[프로그래머스] 합승택시요금 (lv3) (0) | 2021.02.22 |
---|---|
[프로그래머스] 스킬트리 - lv2 (1) | 2021.01.21 |
[프로그래머스] 입국심사 - 이분탐색(lv3) (2) | 2021.01.09 |
[프로그래머스] 등굣길 - dp(lv3) (0) | 2021.01.07 |
[프로그래머스] 정수삼각형 - dp(lv3) (0) | 2021.01.06 |