행렬의 곱셈을 구현하는 문제이다.
def solution(arr1, arr2):
answer = [[0] * len(arr2[0]) for i in range(len(arr1))]
s = 0
for i in range(len(arr1)):
for j in range(len(arr2[0])):
for k in range(len(arr2)):
s += arr1[i][k] * arr2[k][j]
answer[i][j] = s
s = 0
return answer
행렬 곱셈을 하는 방법은 아는데 이걸 반복문으로 나타내는데 이게 생각보다 잘 떠오르지 않아서 코드를 이리저리 고치다가 해결했다.
먼저 행렬 A,B를 AB한다면 A는 행을 기준으로 B는 열을 기준으로 각 원소를 곱하여 더하게 되는데 이 로직을 그대로 반복문으로 나타내면 해결할 수 있다. 가장 바깥의 반복문은 arr1의 행의 크기 만큼 반복되고 중간에 있는 반복문은 arr2의 열의 크기만큼 반복되고 가장 안쪽에 있는 반복문은 arr2의 행의 크기만큼 반복되므로 반복문의 동작 순서의 맞춰서 arr1[i][k] arr2[k][j] 한것을 answer에 저장해주고 return 해주었다.