프로그래머스 - 행렬의 곱셈

Dean_Kang·2021년 6월 30일
0

프로그래머스

목록 보기
3/21

문제

행렬의 곱셈을 구현하는 문제이다.

코드

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 해주었다.

profile
for the goal

0개의 댓글

관련 채용 정보