본문 바로가기
PS/programmers

[Lv. 1] 행렬의 덧셈(Python)

by 강렬한 스포트라이트 2023. 3. 27.

안녕하세요. 

강렬한 스포트라이트 입니다!

 

하기의 문제를 Python 언어를 사용하여 구현하고자 합니다.

 

<문제 설명>

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 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]]

 

 

1) 중첩 for문을 사용하여 arr1, arr2의 행과 열을 합산해주고,

arr1 첫 행의 갯수만큼(arr2여도 상관없음) result1의 원소를 묶어서 구현한 코드입니다.

 

def solution(arr1, arr2):
    result1=[];result2=[]
    for i in range(len(arr1)): #두 행,열의 값을 합산하여 result1에 넣음
        for j in range(len(arr1[i])):
            result1.append(arr1[i][j]+arr2[i][j])
    for k in range(0,len(result1),len(arr1[0])): #첫 행의 갯수만큼 묶어서 result2에 넣음
        result2.append(result1[k:k+len(arr1[0])]) 
    return result2

 

 

2) 상기의 코드에서 arr1에 누적하여 더 간결하게 구현한 코드입니다.

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

 

 

3) zip() 함수의 사용으로 행렬의 덧셈을 더 간편하게 구현한 코드입니다.

 

def solution(arr1, arr2):
    return [[i+j for i,j in zip(a1,a2)] for a1,a2 in zip(arr1,arr2)]

 

 

해보시고 문의사항이 있으시면 댓글로 남겨주세요.´◡`
감사합니다!

 

 

반응형
SMALL