Programmers Code/Level 2

[Programmers] level2 - 행렬의 곱셈 (Python) : 연습문제

NIMHO 2022. 7. 25. 22:04
728x90

▶행렬의 곱셈 - 연습문제 (level 2)

문제

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

 

제한사항

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

 

출력

 

풀이

행렬 곱셈을 어떻게 하는지 알기만 하면 풀 수 있는 문제다.

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

행렬 곱셈은 3중 for문으로 풀 수밖에 없는데 정확성 테스트만 있어서 통과가 되었다.

효율성 테스트가 있었다면 어떻게 풀어야 할지 모르겠다.

아마 함수가 있다면 함수를 쓰고, 아니면 3중 for문으로 푸는 방법이 유일해서 효율성은 없지 않을까 생각한다.

728x90