본문 바로가기
코딩 테스트 연습

[알고리즘] 프로그래머스 - 행렬의 곱셈

by 코드뭉치 2023. 6. 1.

행렬의 곱셈

1. 구해야 하는 것
    행렬의 곱
2. 1을 구하기 위해 필요한 것
    분명히 numpy에 있는 기능일 것.
    행렬을 다룰땐 zip을 쓰면 좋다.
    일단 그냥 해보기

 

일단 그냥 해본 방법

def solution(arr1,arr2):
    answer = []
    for i in range(len(arr1)):
        row = [] # 임시로 저장해서 answer에 더해줄 리스트
        for j in range(len(arr2[0])):
            a = 0 # 임시로 곱들의 합을 더해줄 변수
            for k in range(len(arr2)):
                a += arr1[i][k] * arr2[k][j]
            row.append(a) # row에 더해준 뒤,
        answer.append(row) # 해당 리스트를 answer에 더해주기
    return answer

numpy사용

프로그래머스는 numpy를 지원하기 때문에 사용가능하다

import numpy as np
def solution2(arr1, arr2): 
    return (np.array(arr1) @ np.array(arr2)).tolist()

 

zip 사용 zip(*arr2)로 2차원 배열을 언패킹한 뒤 zip으로 묶어버리는 코드

def solution(arr1, arr2):
    return [[sum(a*b for a, b in zip(row1, col1)) for col1 in zip(*arr2)] for row1 in arr1]

 

댓글