[Py_Lv2] 행렬의 곱셈

Sunghun📈·2021년 11월 6일
0

프로그래머스

목록 보기
86/93
post-thumbnail

- 문제 설명

2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.

- 제한 사항

  • 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
  • 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
  • 곱할 수 있는 배열만 주어집니다.

- 입출력 예

- 접근법

이 문제의 핵심은 당연히 행렬의 곱셈 계산방법에 대해 알아야겠지만 더 중요한것은 곱셈이 가능한 조건이다.

A행렬(3행 2열) B행렬(2행 2열)일 경우 행렬의 곱셈이 가능하다
이유는 3X2 * 2X2로 표현했을때 A행렬의 열과 B행렬의 행의 값이 동일하다. 이런 경우 행렬의 곱셈이 가능하다.

문제 풀이에서는 저 부분을 리스트 값을 가져올 수 있도록
각각 좌표로 넣어야하며 A행렬의 행값과 B행렬의 열값이 다르기때문에 for문은 총 3개가 필요하다.

최종 풀이는 아래와 같다.


def solution(arr1, arr2):
    answer = [] 
    
    for i in range(len(arr1)):
        temp_list = []
        for j in range(len(arr2[0])):
            temp = 0
            for k in range(len(arr2)):
                temp += arr1[i][k] * arr2[k][j]
            temp_list.append(temp)
        answer.append(temp_list)    
    return answer
profile
데이터 분석과 AI 분야의 전문가를 꿈꾸는 청년

0개의 댓글