행렬의 곱셈

sihwan_e·2020년 12월 27일
1

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

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

이해하기 쉽게 정사각행렬인 3 x 3 행렬을 이용해서 생각해보기로했다.

arr1		arr2		arr1 x arr2
[a,b,c]		[1,2,3]		[1a+4b+7c, 2a+5b+8c, 3a+6b+9c]
[d,e,f]		[4,5,6]		[1d+4e+7f, 2d+5e+8f, 3d+6e+9f]
[g,h,i]		[7,8,9]		[1g+4h+7i, 2g+5h+8i, 3g+6h+9i]

수학적 개념에 근거하여,
1.arr1의 행은
2.arr2의 열에 곱해져서 자리를 한다.

arr1의 하나의 행의 원소는 arr2의 열의 이동과 함께 해야한다.

def solution(arr1, arr2):
    answer = []
    for i in range(len(arr1)):
        result = []
        for j in range(len(arr2[0])):
            temp = 0
            for k in range(len(arr2)):
                temp += arr1[i][k]*arr2[k][j]
            result.append(temp)
        answer.append(result)
    return answer
profile
Sometimes you gotta run before you can walk.

1개의 댓글

comment-user-thumbnail
2021년 1월 6일

잘 보고 있습니다

답글 달기

관련 채용 정보