728x90
행렬의 곱셈
문제 설명
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
곱할 수 있는 배열만 주어집니다.
입출력 예
arr1 arr2 return
[[1, 4], [3, 2], [4, 1]] [[3, 3], [3, 3]] [[15, 15], [15, 15], [15, 15]]
[[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]]
내 답
1 2 3 4 5 6 7 8 9 | def solution(arr1, arr2): arrAnswer = [[0]*len(arr2[0]) for _ in range(len(arr1))] for i in range(len(arr1)): for j in range(len(arr2[0])): temp = 0 for k in range(len(arr1[0])): temp += arr1[i][k]*arr2[k][j] arrAnswer[i][j] = temp return arrAnswer | cs |
남의 답 1
1 2 | def productMatrix(A, B): return [[sum(a*b for a, b in zip(A_row,B_col)) for B_col in zip(*B)] for A_row in A] | cs |
남의 답 2
1 2 3 | import numpy as np def productMatrix(A, B): return (np.matrix(A)*np.matrix(B)).tolist() | cs |
남의 답 3
1 2 3 4 5 6 7 8 9 10 11 | def productMatrix(A, B): answer = [] for y1 in range(len(A)): a=[] for x2 in range(len(B[0])): n = 0 for x1 in range(len(A[0])): n += A[y1][x1] * B[x1][x2] a.append(n) answer.append(a) return answer | cs |
1183점 + 5점 -> 1188점
728x90
'Python' 카테고리의 다른 글
| 210710 프로그래머스 코딩 연습 level2 올바른 괄호 (0) | 2021.07.10 |
|---|---|
| 210709 프로그래머스 코딩 연습 level2 피보나치 수 (0) | 2021.07.09 |
| 210707 프로그래머스 코딩 연습 완주하지 못한 선수 (0) | 2021.07.07 |
| 210707 프로그래머스 코딩 연습 문자열 내 마음대로 정렬하기 (0) | 2021.07.07 |
| 210706 프로그래머스 코딩 연습 최대공약수와 최소공배수 (0) | 2021.07.06 |




최근댓글