Programmers

[프로그래머스] 행렬의 덧셈 / Python

개발하는 사막여우 2021. 1. 15. 09:42
반응형

문제주소 :programmers.co.kr/learn/courses/30/lessons/12950

 

코딩테스트 연습 - 행렬의 덧셈

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요

programmers.co.kr


<문제 설명>

더보기

문제 설명

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.

제한 조건

  • 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.

입출력 예

arr1                                             arr2                                           return
[[1,2],[2,3]] [[3,4],[5,6]] [[4,6],[7,9]]
[[1],[2]] [[3],[4]] [[4],[6]]

 

<풀이법>

▒ 한줄 개념: 넘파이를 사용한 broadcasting 연산 ▒ 

이중 반복문을 통해서 풀 수도 있는 두 2차원배열을 내적하듯이 위치에 맞게 합연산해주면 되는 문제입니다.

파이썬의 모듈 중 하나인 numpy를 사용하면 훨씬 쉽게 할 수 있습니다.

numpy모듈을 사용하여 생성되는 ndarray는 배열과 비슷한 형태로, ndarray간의 연산시 자동으로 각 위치끼리의 연산이 이루어집니다. 

따라서 numpy를 사용하여 두 배열을 모두 ndarray로 만들고, 두 ndarray를 합쳐 하나의 리스트로 되돌리면 쉽게 문제를 해결할 수 있습니다.

 

<코드(Python)>

import numpy as np
def solution(arr1, arr2):
    n_arr1 = np.array(arr1)
    n_arr2 = np.array(arr2)
    return (n_arr1+n_arr2).tolist()

 

 

더 많은 코드 보기(GitHub) : github.com/dwkim-97/CodingTest

 

 

반응형