알고리즘&자료구조/Algorithm

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

백엔드 개발자 - 젤리곰 2024. 4. 24. 13:04
728x90

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

 

프로그래머스

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

programmers.co.kr

1. 문제

두 행렬을 받아서 곱한 결과를 반환하는 함수를 만들어라.

 

2. 문제풀이흐름

행렬의 곱셈을 모르면 못푸는 문제다.

1. arr1과 arr2의 곱셈의 결과 크기만큼의 2차원 배열을 초기화한다.

2. arr1의 행길이 만큼 순회를 돈다. (행과 열을 곱하기 때문이다.)

3. arr2의 열길이 만큼 순회를 돈다. 

4. arr1의 열길이 만큼 순회를 돈다.

 

def solution(arr1, arr2):
    answer = [[0 for _ in range(len(arr2[0]))] for _ in range(len(arr1))]#2차원배열 초기화
    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

 

3. 배워갈 내용

✔️2차원 배열 초기화

[[0 for _ in range(len(arr2[0]))] for _ in range(len(arr1))]

--> 'arr2[0]'의 열 개수만큼 0을 갖는 리스트를 각각의 행으로 생성한다.

 

 

728x90