https://programmers.co.kr/learn/courses/30/lessons/12949
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
곱할 수 있는 배열만 주어집니다.
두 행렬의 곱의 결과는 [앞의 행렬의 행의 길이 X 뒤의 행렬의 열의 길이]이다. 그래서 반복문을 돌때도 네번 도는 것이 아니라, 세번만 돌면 된다.
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++) {
for (int j = 0; j < arr1[0].length; j++) {
for (int k = 0; k < arr2[0].length; k++)
answer[i][k] += arr1[i][j] * arr2[j][k];
}
}
return answer;
}
}
def solution(arr1, arr2):
answer = []
# 첫번째 행렬의 행의 개수만큼 반복
for i in range(len(arr1)):
lis = []
# 두번째 행렬의 열의 개수만큼 반복
for j in range(len(arr2[0])):
ssum = 0
# 각 행렬의 곱할 원소들은 첫번째 행렬의 열의 인덱스 = 두번째 행렬의 행의 인덱스
for k in range(len(arr1[i])):
ssum += arr1[i][k] * arr2[k][j]
lis.append(ssum)
answer.append(lis)
return answer