✔ 행렬의 곱셈
문제 분석하기
반복문을 통해 행렬의 곱셈을 계산
손으로 풀어보기
- 반복문을 이용해 행렬 arr1의 가로 줄과 행렬 arr2의 세로 줄의 곱을 구해 저장
- 이때 인덱스는 앞쪽의 열이자 뒤쪽의 행을 가져오도록 해야함
- 행렬의 곱셈의 결과를 반환
슈도코드 작성하기
arr1, arr2(2차원 행렬)
answer(arr1에 arr2를 곱한 결과)
for(i -> arr1의 길이만큼) {
for(j -> arr2[0]의 길이만큼) {
for(k -> arr1[0]의 길이만큼) {
answer[i][j]에 arr1[i][k] * arr[k][j] 추가하기
}
}
}
answer 반환
코드 구현하기
/**
* 12949) 행렬의_곱셈
*/
public class L019_12949 {
// arr1, arr2(2차원 행렬)
public int[][] solution(int[][] arr1, int[][] arr2) {
// answer(arr1에 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++) {
// k는 앞쪽의 열이자 뒤쪽의 행 인덱스
for (int k = 0; k < arr1[0].length; k++) {
// answer[i][j]에 arr1[i][k](앞쪽의 행) * arr[k][j](뒤쪽의 열) 추가하기
answer[i][j] += arr1[i][k] * arr2[k][j];
}
}
}
// answer 반환
return answer;
}
// 테스트 케이스
public static void main(String[] args) {
L019_12949 solution = new L019_12949();
int[][] arr1 = { { 1, 4 }, { 3, 2 }, { 4, 1 } };
int[][] arr2 = { { 3, 3 }, { 3, 3 } };
int[][] result = solution.solution(arr1, arr2);
System.out.println(Arrays.toString(result));
}
}
'Coding Test > Java 알고리즘 실전' 카테고리의 다른 글
[12952] N-Queen (0) | 2024.01.11 |
---|---|
[12951] JadenCase 문자열 만들기 (0) | 2024.01.11 |
[12905] 가장 큰 정사각형 찾기 (0) | 2024.01.10 |
[12902] 3 x n 타일링 (0) | 2024.01.10 |
[12900] 2 x n 타일링 (0) | 2024.01.10 |