https://school.programmers.co.kr/learn/courses/30/lessons/12949
코딩테스트 연습 > 연습문제 > 행렬의 곱셈
난이도: LEVEL2
알고리즘 유형: 구현 (수학: 행렬의 곱셈)
문제 풀이
이번 문제는 행렬의 곱셈을 접하지 않았다면 풀 수 없는 문제였다.
나 또한 예제에 나온 숫자로 행렬의 곱셈을 추정하면서 푸려고 했으나 포기하고
행렬의 곱셈 공식을 구글링하여 풀었다.
arr1 행 길이는 2 arr1 열 길이는 3
arr2 행 길이는 3 arr2 열 길이는 2
arr1 열 길이와 arr2 행 길이가 다르다면 두 행렬은 행렬의 곱셈으로 표현이 불가능하다.
즉 (2 * 3) 행렬 * (3 * 2) 행렬인데
결과로 나오는 행렬의 곱셈은 2 * 2 이다.
→ arr1 행 길이 * arr2 열 길이
곱셈 과정
결과
정답 코드
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int a = arr1.length;
int b = arr1[0].length;
int c = arr2.length;
int d = arr2[0].length;
// b == c
int[][] answer = new int [a][d];
for(int i = 0; i < a; i++){ // -> arr1 행
for(int j = 0; j < d; j++){ // -> arr2 열
int sum = 0;
for(int k = 0; k < c; k++){
sum += arr1[i][k] * arr2[k][j];
}
answer[i][j] = sum;
}
}
return answer;
}
}
'Algorithm > Programmers Java' 카테고리의 다른 글
[JAVA] 프로그래머스 LEVEL3 GPS (0) | 2024.10.19 |
---|---|
[JAVA] 프로그래머스 LEVEL2 유사 칸토어 비트열 (1) | 2024.10.18 |
[JAVA] 프로그래머스 LEVEL2 행렬 테두리 회전하기 (1) | 2024.10.16 |
[JAVA] 프로그래머스 LEVEL2 문자열 압축 (1) | 2024.10.16 |
[JAVA] 프로그래머스 LEVEL2 2개 이하로 다른 비트 (1) | 2024.10.16 |