코딩 테스트 연습
[알고리즘] 프로그래머스 - 행렬의 곱셈
코드뭉치
2023. 6. 1. 22:36
행렬의 곱셈
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]