본문 바로가기
Coding Test

231024 행렬의 덧셈 - Level 1

by mmm- 2023. 10. 24.

문제 설명

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


 

제한사항

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

 

입출력 예


코드

def solution(arr1, arr2):
    answer = [[0 for j in range(len(arr1[i]))] for i in range(len(arr1))]
        
    for i in range(len(arr1)):
        for j in range(len(arr1[i])):
            answer[i][j] = arr1[i][j] + arr2[i][j]
            
    return answer

 

풀이

[[0 for j in range(len(arr1[i]))] for i in range(len(arr1))] 이와 같이 2차원 배열을 arr1의 길이만큼 0으로 초기화해준다.

arr1, arr1[i] 만큼 반복문을 돌려 arr1, arr2배열에 같은 자리에 있는 수끼리 더해 answer에 할당해준다.


다른 코드와 풀이

아래의 코드는 다른 사람들이 작성한 것들로, 내 코드와 비교, 참고하기 위해 가져왔다.

 

1️⃣

def sumMatrix(A,B):
    answer = [[c + d for c, d in zip(a,b)] for a, b in zip(A,B)]
    return answer

zip()을 이용해 A, B의 같은 자리에 있는 수끼리 묶어준다. 2차원 배열이기 때문에 그렇게 묶어준 리스트를 또 묶어준다. 그렇게 묶어준 리스트의 같은 자리에 있는 수끼리 더해줘 answer에 할당한다.

 

2️⃣

def sumMatrix(A,B):
    return [list(map(sum, zip(*x))) for x in zip(A, B)]

zip()을 이용해 A, B의 같은 자리에 있는 수끼리 묶어준 후 언패킹(*x => x를 언패킹한것)을 통해 튜플을 분해해 각 위치별로 합을 계산하여 list로 변환한 값을 리턴해준다.

 

3️⃣

import numpy as np

def sumMatrix(A,B):
    A_np = np.array(A)
    B_np = np.array(B)
    result = A_np + B_np
    return result.tolist()

리스트  A, B를 numpy배열로 변환하여 각 변수에 넣어준 후 둘을 더해주고, 그 값을 리스트로 변환해준다.

 


정리

Numpy

: 다차원 배열을 쉽게 처리하고 효율적으로 사용할 수 있도록 지원하는 파이썬의 패키지

 

(참고; https://brownbears.tistory.com/480)