문제 확인
나의 풀이
- 행렬의 곱을 얻기 위해선 arr1의 행과 arr2 열 사이의 연산이 필요하다.
- arr2의 열 성분을 얻기 위해서
zip(*arr2)
를 활용했다.*arr2
를 통해 unpacking을 하면 각 행 별 리스트([] [] [])를 얻을 수 있고,zip
을 사용하면 리스트의 n 번째 항 끼리 묶을 수 있다.- 각 행의 n 번째 항 끼리 묶은 것은 결국 행렬의 열과 동일하다.
# (a x b) * (b x a) = (a x a)
# 행 - 열 성분 사이 곱
def solution(arr1, arr2):
# 출력 행렬의 크기 : (arr1의 행 길이 x arr2의 열 길이)
answer = [[0 for _ in range(len(arr2[0]))]for _ in range(len(arr1))]
for i, row in enumerate(arr1):
# 행 - 열 뒤집기
for j, col in enumerate(zip(*arr2)):
# 행 - 열 사이 곱
answer[i][j] = sum([row[k] * col[k] for k in range(len(col))])
return answer