
[프로그래머스] 행렬의 곱셈알고리즘2024. 4. 17. 23:01
Table of Contents
문제 설명
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
곱할 수 있는 배열만 주어집니다.
입출력 예
| arr1 | arr2 | return |
| [[1, 4],[3, 2],[4, 1]] | [[3, 3], [3, 3]] | [[15, 15], [15, 15], [15, 15]] |
| [[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]] |
풀이
행렬의 행과 열의 길이가 2~100 사이이기 때문에 3중 for문으로 돌려도 된다고 생각했다.
1. result 배열을 생성한다.(m*n 행렬과 n*l 행렬의 곱의 결과는 n * l 행렬)
2. 3중 for문을 돌면서 행렬 곱셈의 방식대로 각 원소를 구해서 result 배열에 담는다.
import java.util.*;
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] result = new int[arr1.length][arr2[0].length];
for(int i = 0; i < arr1.length; i++) {
for(int j = 0; j < arr2[0].length; j++) {
for(int k = 0; k < arr1[0].length; k++) {
result[i][j] += arr1[i][k] * arr2[k][j];
}
}
}
return result;
}
}
행렬 곱셈이 가물가물해서 헷갈렸다...😅
인덱스를 설정하는데에 좀 해맸는데, 침착하게 생각해보니 쉽게 해결할 수 있었다.
'알고리즘' 카테고리의 다른 글
| [묘공단] 1주차 학습 기록 (배열, ArrayList) (0) | 2024.04.21 |
|---|---|
| [프로그래머스] 올바른 괄호 (1) | 2024.04.19 |
| [프로그래머스] 실패율 (0) | 2024.04.18 |
| [프로그래머스] 모의고사 (0) | 2024.04.16 |
| [프로그래머스] 두 개 뽑아서 더하기 (0) | 2024.04.15 |

@clapp :: Clap 개발블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!