Seize the day
article thumbnail

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

 

프로그래머스

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

programmers.co.kr

 

문제 설명

문제 설명

2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.

제한 조건
  • 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
  • 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
  • 곱할 수 있는 배열만 주어집니다.

문제 해결

def solution(arr1, arr2):
    answer = [ [0] * len(arr2[0]) for _ in range(len(arr1)) ]
    for i in range(len(arr1)): 
        lists = []
        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

 

문제 풀이 설명

먼저 이 문제를 풀기 위해선 행렬의 곱셈과정을 알아야 한다.

먼저 m x k, k x n 의 행렬끼리 곱하면 곱한 결과는 m x n이 나와야 하며, 이 문제에서는 무조건 곱할 수 있게 나온다고 했으므로 고려하지 않아도 된다.

첫번째 for문은 k의 길이만큼 돌리고, 두번째 for문은 m의 길이만큼 돌린다. 세번째 for문은 m의 길이만큼 돌리면서 왼쪽 행렬의 행(가로)와 오른쪽 행의 열(세로)를 곱해 answer을 update 해준다.

간단히 행렬의 곱에 대해 알고 있으면 풀 수 있는 문제였던것 같지만 아무래도 수학은 어렵다..

profile

Seize the day

@성 현

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!