본문 바로가기
Algorithm/프로그래머스

[프로그래머스] 파이썬 문제풀이 - 행렬의 곱셈

by whdgus928 2023. 5. 16.

https://school.programmers.co.kr/learn/courses/30/lessons/12949

 

프로그래머스

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

programmers.co.kr

첫 풀이

1. 전에 numpy를 다뤄본적이 있어 numpy 라이브러리를 사용했다

2. numpy에는 행렬을 다루는 기능이 있어 편리하다

3. 우리가 생각하는 곱은 행렬에서 @이다. *은 원소별로 곱하기다

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

    return arr_new.tolist()

라이브리러를 사용하지 말고 직접 코드 구현도 해보는게 문제의 의도같다

더 나은 답안

1. 행렬의 곱에서 가장 중요한 건 왼쪽 행렬의 열 개수와 오른쪽 행렬의 행 개수가 동일할 것이다

2. 위 조건을 명심하고 코드를 구현한다

def solution(A, B):
    answer = []

    for i in range(len(A)):
        arr = []
        for j in range(len(B[0])):
            tmp = 0
            for k in range(len(A[0])):
                tmp += A[i][k] * B[k][j]
            arr.append(tmp)
        answer.append(arr)

    return answer

 

반응형

댓글