본문 바로가기
코딩테스트/프로그래머스Programmers

[프로그래머스][Lv.2][JAVA]행렬의 곱셈

by 빔o0O 2025. 2. 8.

 

문제

2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.

 

제한 조건

  • 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
  • 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
  • 곱할 수 있는 배열만 주어집니다.

입출력 예

 


 

분석

  1. 행렬A x 행렬B 는 A의 1행과 B의 1열을 각각 순번대로 곱해 나온 값을 합하여 나온다. 
  2. 그러므로 행렬의 곱에서 결과물로 도출된 행렬의 크기 (행x열) 는 [A의 행 개수 x B의 열 개수]가 된다.

 

 

 


 

피드백

  1. 대충 느낌은 알겠는데 머리가 안 돌아가서 생각보다 풀이에 오래 걸렸다... 

 

 

 


 

답안

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int[][] answer = new int[arr1.length][arr2[0].length];
        int cnt = arr1[0].length;
        
        for(int i = 0; i < arr1.length; i++) {	// arr1의 행을 순회 
        	for(int j = 0; j < arr2[0].length; j++) {		// arr2의 열을 순회하여 곱셈 및 합
        		int tmp = 0;

        		for(int x = 0; x < cnt; x++) {
        			tmp += arr1[i][x] * arr2[x][j];
        		}
        		
        		answer[i][j] = tmp;
        	}
        }
        return answer;
    }
}

 

 

 

 


 

🔗링크

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr