[프로그래머스 Lv2] 행렬의 곱셈 (파이썬)

Jewon Joel Park·2022년 7월 28일
0

Programmers-solution

목록 보기
25/34

문제 링크


문제 설명

2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수 작성


풀이 코드

def solution(arr1, arr2):
    answer = [[0 for _ in range(len(arr2[0]))] for _ in range(len(arr1))]
    for i in range(len(arr1)):
        for j in range(len(arr2[0])):
            for k in range(len(arr1[0])):
                answer[i][j] += arr1[i][k] * arr2[k][j]
    return answer

코드 설명

  1. 곱할 수 있는 행렬만 주어지기 때문에 Greedy하게 접근했고, 반환하기 위한 초기 행렬 answer의 크기를 구하기 위해 연습장에 가볍게 적으며 풀었음.
  2. answer 행렬은 한 행에 arr2의 행벡터 크기만큼의 원소를 가지며, arr1의 열벡터 크기만큼의 행을 가지므로 for Loop을 사용하여 0으로 채워진 초기 행렬 선언
  3. answer의 각 원소에 접근하기 위하여 첫 forarr1의 크기만큼, 두 번째 forarr2[0]의 크기만큼 설정하여 2중 for Loop 구성
  4. 이후 arr1arr2에 공통적으로 사용할 인덱스k를 부여하기 위하여 행렬곱의 첫 요소인 arr1의 첫 원소 크기만큼 for Loop 생성
  5. answer의 각 요소인 [i][j]에 접근하며 arr1i번째 행의 스칼라 [k]arr2k번째 행의 스칼라 [j]를 곱하는 연산을 반복
profile
10년을 돌고 돌아 마침내 제자리를 찾은 문과 출신 Python 개발자의 인생기록장

0개의 댓글