Stay Hungry Stay Foolish

프로그래머스 코딩테스트/Level 2

Programmers 행렬의 곱셈 (Python/Level 2)

dev스카이 2022. 8. 11. 13:23
 

프로그래머스

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

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]]

풀이

  • numpy를 사용하는 이유는 리스트에서 곱셈이 안 되기 때문이다. numpy배열은 행렬처럼 변환한다.
  • @기호는 곱하기랑 같다. 정방 행렬의 곱일 경우는 *를 사용하지만, 그게 아닐 경우 사용한다. 조건은, 왼쪽 행렬의 열 개수와 오른쪽 행렬의 행 개수가 동일해야만 한다.
  • tolist() : numpy의 tolist는 array를 차원을 유지한 채로 python의 list로 변환한다.

Solution

import numpy as np
def solution(arr1, arr2):
    answer = [[]]
    np.array(arr1 @ arr2)
    return answer