문제 설명

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

제한 조건

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

 

코드

import numpy as np

def solution(arr1, arr2):
    a = np.matrix(arr1)
    b = np.matrix(arr2)
    answer = np.dot(a, b).tolist()
    return answer

 

numpy의 matrix 기능을 이용하여 간단하게 행렬을 만들 수 있다.

두 행렬을 곱한 뒤 리스트로 변환해주어 리턴하면 된다.

 

반복문을 이용한 풀이

def solution(arr1, arr2):
    answer = []
    for i in range(len(arr1)):
        tmp = []
        for j in range(len(arr1[0])):
            tmp.append(arr1[i][j] + arr2[i][j])
        answer.append(tmp)
    return answer

 

arr1의 길이만큼 순회한다.

arr1과 arr2의 곱을 저장할 tmp 리스트

arr1[0]의 길이만큼 순회한다. 예를 들어 2x3 . 3x2 행렬의 곱이라면  3x3의 행렬이 나오므로 arr1[0]의 길이인 3번 순회해야 한다.

그 후 각 배열의 [i][j] 번째 원소를 더하여 tmp리스트에 append한 후 answer 리스트에 append 한다.

 

복사했습니다!