[프로그래머스]-행렬의 곱셈

이정연·2022년 11월 13일
0

CodingTest

목록 보기
98/165
post-thumbnail

➕➖✖️➗

문제 설명

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

제한 조건

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

입출력 예

나의 풀이

  • A X B = C

A를 nxk B를 kxm 행렬이라고 할 때 행렬 특성에 의하여 그 곱 행렬 C는 nxm 행렬로 도출된다.

이 때 행렬 연산 규칙에 의거하여 C 행렬 원소의 수식을 구할 수 있다.

CODE

def solution(arr1, arr2):
    n,k,m = len(arr1),len(arr1[0]),len(arr2[0])
    answer = [[0]*m for _ in range(n)]
    
    for i in range(n):
        for j in range(m):
            for x in range(k): 
                answer[i][j] += arr1[i][x]*arr2[x][j]
    return answer

Pythonic 풀이

zip 함수

fruit = ['apple','banana','cherry']
number = [1,2,3]

for pair in zip(fruit,number):
    print(pair)

(1,'apple')
(2,'banana')
(3,'cherry)

로직은 나의 풀이와 같지만 이를 zip 함수를 이용하여 파이써닉 하게 풀어내었다.

CODE

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]
profile
0x68656C6C6F21

0개의 댓글