-
[프로그래머스] 행렬의 곱셈알고리즘 2023. 9. 23. 23:19
문제
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
곱할 수 있는 배열만 주어집니다.풀이
행렬의 곱셈을 안다면 쉽게 풀 수 있을 것이다.
구현이 생각보다 어려울 수 있다.
첫 행렬의 행과 두번째 행렬의 열의 숫자가 일치해야 곱을 할 수 있다.
그러나 문제에서 불가능한 행렬에 대해서는 주어지지 않으므로 가능하다는 전제하에 풀이하면 된다.for문을 3번이나 써야하기 때문에 조금 복잡하지만 어렵지 않게 풀었다.
import java.util.*; import java.lang.*; 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++) { int[] subArr = arr1[i]; for(int j = 0; j < arr2[0].length; j++) { for(int k = 0; k < subArr.length; k++) { answer[i][j] += subArr[k] * arr2[k][j]; } } } return answer; } }
728x90'알고리즘' 카테고리의 다른 글
[BOJ] N-Queen (0) 2023.09.24 [BOJ] N과M(1) (0) 2023.09.24 [프로그래머스] 저주의 숫자3 (0) 2023.09.17 [프로그래머스] 최댓값과 최솟값 (0) 2023.09.12 [프로그래머스] 마법의 엘리베이터 (0) 2023.09.11