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
'Programmers Code > Level 2' 카테고리의 다른 글
[Programmers] level2 - 올바른 괄호 (Python) : 스택/큐 (0) | 2022.08.19 |
---|---|
[Programmers] level2 - 배달 (Python) : Summer/Winter coding(~2018) (0) | 2022.07.26 |
[Programmers] level2 - 게임 맵 최단거리 (Python) : 깊이/너비 우선 탐색(DFS/BFS) (0) | 2022.07.19 |
[Programmers] level2 - 영어 끝말잇기 (Python) : Summer/Winter coding(~2018) (0) | 2022.07.18 |
[Programmers] level2 - 2 x n 타일링 (Python) : 연습문제 (0) | 2022.07.17 |