데이터사이언스 기록기📚

[프로그래머스] Level 2_행렬의 곱셈(연습문제) 본문

Coding Test/프로그래머스(Python)

[프로그래머스] Level 2_행렬의 곱셈(연습문제)

syunze 2022. 10. 13. 12:52

📌문제 유형

연습문제

 

📌문제

 

프로그래머스

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

programmers.co.kr

 

📌나의 문제풀이

- numpy 모듈 사용, @(행렬 곱)연산 수행

- 행렬 곱

 

[Numpy]행렬곱(@)과 내적(dot) 그리고 별연산(*)

numpy array의 곱연산에 대해서 알아보도록 하겠습니다. 곱연산에는 총 세가지 연산이 있는데요. 선형대수에서 배우는 행렬의 곱을 하는 행렬곱(@)과 내적, 스칼라 곱을 하는 별연산(*) 이 있습니다.

seong6496.tistory.com

- numpy to list, list to numpy

  • list to numpy : np.array(list)
  • numpy to list : list.tolist()
 

list를 numpy array로 바꾸고 numpy array를 list로 바꾸는 방법을 알아봅시다.

 백준을 풀 때 numpy를 이용할 일이 가끔 있었습니다. 이번 시간에는 어떻게 numpy array를 초기화 하고, numpy 배열을 어떻게 파이썬의 리스트로 바꾸는지 보도록 하겠습니다. 그리고 list를 어떻게 넘

codingdog.tistory.com

import numpy as np

def solution(arr1, arr2): 
    arr1 = np.array(arr1)
    arr2 = np.array(arr2)
    
    answer = arr1 @ arr2
    
    return answer.tolist()

 

📌다른 사람의 문제풀이

1) zip 이용

def productMatrix(A, B):
    return [[sum(a*b for a, b in zip(A_row,B_col)) for B_col in zip(*B)] for A_row in A]

2) 직관적인 코드

def productMatrix(A, B):
    answer = []
    for y1 in range(len(A)):
        a=[]
        for x2 in range(len(B[0])):
            n = 0
            for x1 in range(len(A[0])):
                n += A[y1][x1] * B[x1][x2]
            a.append(n)
        answer.append(a)
    return answer

 

728x90
Comments