행렬의 곱셈
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]
'코딩 테스트 연습' 카테고리의 다른 글
[알고리즘] 프로그래머스 - 로또의 최고 순위와 최저 순위 (0) | 2023.06.02 |
---|---|
20230530 TIL - 알고리즘 (0) | 2023.06.01 |
[알고리즘] 프로그래머스 - 대충 만든 자판 (0) | 2023.06.01 |
[알고리즘] 프로그래머스 - 과일 장수 (0) | 2023.05.19 |
[알고리즘] 프로그래머스 - 푸드 파이트 대회 (0) | 2023.05.19 |
댓글