Digking's cave

프로그래머스 ) 행렬의 곱셈 (Python) 본문

코딩테스트/알고리즘

프로그래머스 ) 행렬의 곱셈 (Python)

디깅 2022. 9. 26. 14:52
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/12949

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명

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

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

입출력 예

arr1 arr2 return
[[1, 4], [3, 2], [4, 1]] [[3, 3], [3, 3]] [[15, 15], [15, 15], [15, 15]]
[[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]]

풀이

def solution(arr1, arr2):
    temarrlist1 = len(arr1)
    temarrlist2 = len(arr2[0])
    answer = [[0]*temarrlist2 for _ in range(temarrlist1)]

    for i in range(temarrlist1): 
        for j in range(temarrlist2):
            for k in range(len(arr1[0])):
                answer[i][j] += arr1[i][k] * arr2[k][j]
    return answer

 

1. 행렬의곱셈에 대한 이해

 https://ko.wikipedia.org/wiki/%ED%96%89%EB%A0%AC#%EA%B3%B1%EC%85%88

 

행렬 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 다른 뜻에 대해서는 행진 문서를 참고하십시오. 행렬론은 여기로 연결됩니다. 이론물리학 용어에 대해서는 행렬 이론 문서를 참고하십시오. 수학에서 행렬(行

ko.wikipedia.org

arr1의 행과 arr2의 열을 곱하면 된다.

 

2. 삼중for문 사용 & for문의 range 설정

arr1의 행마다 arr2의 모든 열의 값을 곱하는 것이다.

i ) temarrlist1 = len(arr1)  # arr1의 행의 길이
j ) temarrlist2 = len(arr2[0]) #arr2의 열의 길이

k ) arr1의 행의 각 값의 길이

 

3. answer길이 설정

answer = [[0]*temarrlist2 for _ in range(temarrlist1)]

 

반응형