728x90
def solution(arr1, arr2):
row = len(arr1)
col = len(arr2[0])
answer = [[0 for b in range(col)] for a in range(row)]
for i in range(row):
for j in range(col):
for k in range(len(arr2)):
answer[i][j] += (arr1[i][k] * arr2[k][j])
return answer
c언어로 풀듯이 풀어봤습니다. 학교 과제로 제출했던 기억이 나네요
1. 새로 만들어질 행렬은 (arr1의 행의 수, arr2의 열의 수)를 (행, 열)로 가짐. 만들어주고 0으로 초기화시켜줌
2. 3중 for문으로 행렬곱을 수행한 값 넣기(규칙 이용, 아래에 설명)
3. 만들어진 배열 반환
+) 설명
a행렬과 b행렬의 곱으로 만들어질 행렬이 c라고 했을 때, 다음과 같은 규칙을 찾을 수 있습니다.
c[ i ][ j ] = a[ i ][ k ] * b[ k ][ j ]
i, j는 다음과 같이 고정되고, k는 0부터 a의 열(=b의 행)의 수까지 반복됩니다.
이 공식을 이용해서 코드와 같이 구현해주었습니다!
728x90
'알고리즘 > programmers[2]' 카테고리의 다른 글
[프로그래머스] 오픈채팅방: python3 (0) | 2022.01.28 |
---|---|
[프로그래머스] 문자열 압축: python3 (0) | 2022.01.27 |
[프로그래머스] 더 맵게: python3 (0) | 2022.01.27 |