문제 설명
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 한다.
'⏰ 코딩테스트 > 프로그래머스' 카테고리의 다른 글
프로그래머스 2단계 - 소수 만들기 (0) | 2021.01.19 |
---|---|
프로그래머스 2단계 - 짝지어 제거하기 (0) | 2021.01.18 |
프로그래머스 2단계 - 전화번호부 (0) | 2021.01.15 |
프로그래머스 2단계 - 피보나치 (0) | 2021.01.13 |
프로그래머스 1단계 (0) | 2020.09.24 |