본문 바로가기
문제풀이/Programmers 문제풀이

[ 알고리즘 ] 코딩 - Programmers - 행렬의 곱셈.java

by 마늘아빠 2021. 1. 23.
728x90
반응형

문제 링크

programmers.co.kr/learn/courses/30/lessons/12949#

 

코딩테스트 연습 - 행렬의 곱셈

[[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]]

programmers.co.kr


* 프로그래머스 - Level 2 - (자바)행렬곱셈 - 3중 for문

제한 조건
입출력 예시


< 로직 >

* 기본 행렬의 곱셈을 그대로 코드로 옮긴다

* 곱 할 수 없는 행렬은 주어지지 않으므로 편하게 계산하면 된다

* 3x2 행렬과 2 x 2 행렬을 예로 들면 아래와 같다

* 이런 로직을 배열의 크기 만큼 반복 구현하면 된다!


class Solution {
	    public int[][] solution(int[][] arr1, int[][] arr2) {
	    	/*
	    	 * 2x3 * 3x2 일 때 2x2가 된다.
	    	 * 즉, arr1의 길이가 열길이
	    	 * arr2[0]의 길이가 행의 길이가 된다
	    	 * */
	        int[][] answer = new int[arr1.length][arr2[0].length];
	        
	        // arr1의 열 인덱스
	        for(int i = 0; i < arr1.length; i++) {
	        	// arr2의 열인덱스
	        	for(int idx = 0; idx < arr2[0].length; idx++) {
	        		int calc = 0;
	        		// arr1과 arr2 곱셈
		        	for(int j = 0; j < arr1[i].length; j++) {
		        		calc += arr1[i][j] * arr2[j][idx];
		        	}
		        	answer[i][idx] = calc;
	        	}
	        }
	        return answer;
	    }
반응형