-
[프로그래머스/JAVA] 행렬의 곱셈Algorithm/Java 2025. 1. 23. 15:38
https://school.programmers.co.kr/learn/courses/30/lessons/12949
📌 문제 풀이
arr1 [[1, 4],
[3, 2],
[4, 1]]
arr2 [[3, 3],
[3, 3]]
배열이 위처럼 주어졌을 때,행렬의 곱셈은 " arr1 행렬 x arr2 행렬 = arr1 행렬의 행 개수 X arr2 행렬의 열 개수 " 를 나타낸다.
answer[0][0] = (arr1[0][0] * arr2[0][0]) + (arr1[0][1] * arr2[1][0]) = 3 + 12 = 15 answer[0][1] = (arr1[1][0] * arr2[0][1]) + (arr1[1][1] * arr2[1][1]) = (3*3) + (2*3) = 15 answer[1][0] = (arr1[2][0] * arr2[0][0]) + (arr1[2][1] * arr2[1][0]) = (4*3) + (1*3) = 15 answer[1][1] = (arr1[0][0] * arr2[0][1]) + (arr1[0][1] * arr2[1][1]) = (1*3) + (4*3) = 15 answer[2][0] = (arr1[1][0] * arr2[0][0]) + (arr1[1][1] * arr2[1][0]) = (3*3) + (2*3) = 15 answer[2][1] = (arr1[2][0] * arr2[0][1]) + (arr1[2][1] * arr2[1][1]) = (4*3) + (1*3) = 15
📌 정답 코드
class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { // 결과 행렬의 크기는 arr1의 행 개수와 arr2의 열 개수에 따라 결정 int[][] answer = new int[arr1.length][arr2[0].length]; for(int i = 0; i < arr1.length; i++) { // arr1의 각 행을 처리 for(int j = 0; j < arr2[0].length; j++) { // arr2의 각 열을 처리 for(int z = 0; z < arr1[0].length; z++) { // arr1의 한 행과 arr2의 한 열의 각 원소를 곱하고 누적합을 계산 answer[i][j] += arr1[i][z] * arr2[z][j]; } } } return answer; } }
반응형'Algorithm > Java' 카테고리의 다른 글
[프로그래머스/JAVA] 2016년 (1) 2025.01.27 [프로그래머스/JAVA] H-Index (0) 2025.01.24 [프로그래머스/JAVA] n^2 배열 자르기 (0) 2025.01.23 [프로그래머스/JAVA] 할인행사 (1) 2025.01.22 [프로그래머스/JAVA] 괄호 회전하기 (0) 2024.12.01