-
[Programmers] 행렬의 곱셈[+] 알고리즘 [+] 2020. 5. 5. 13:09
[문제 설명]
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
- 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
- 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
- 곱할 수 있는 배열만 주어집니다.
[풀이 과정]
말 그대로 행렬의 곱셈을 코드로 구현하면 된다.
배열을 머릿속에서 이차원으로 그리고 뒤집고 하면서 머리가 찌끈찌끈해지는 전형적인 알고리즘 문제다.
def solution(arr1, arr2): arr3 = list(map(list, zip(*arr2))) answer = [] for i in range(0, len(arr1)): arr = [] for j in range(0, len(arr2[0])): temp = 0 for k in range(0, len(arr3[0])): temp += arr1[i][k]*arr3[j][k] arr.append(temp) answer.append(arr) return answer
이런식으로 구현하면 된다
하지만?
import numpy as np def solution(arr1, arr2): arr1 = np.array(arr1) arr2 = np.array(arr2) return np.dot(arr1,arr2).tolist()
넘파이 라이브러리를 임포트하는게 가능하더라.
'[+] 알고리즘 [+]' 카테고리의 다른 글
[Programmers] [1차] 뉴스 클러스터링 (0) 2020.05.25 [Programmers] [1차] 프렌즈4블록 (0) 2020.05.24 [Programmers] 구명보트 (0) 2020.04.18 [Programmers] 단어 변환 (0) 2020.04.14 [Programmers] 튜플 (0) 2020.04.10