코테 공부/프로그래머스

[Python] 행렬의 덧셈

prefer_all 2022. 8. 2. 19:06
문제

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

 

입출력 예시
arr1 arr2 return
[[1,2],[2,3]] [[3,4],[5,6]] [[4,6],[7,9]]
[[1],[2]] [[3],[4]] [[4],[6]]

 

풀이

1) numpy 이용

import numpy as np

def solution(arr1, arr2):
    np_arr1 = np.array(arr1)
    np_arr2 = np.array(arr2)
    sum_arr = np_arr1 + np_arr2
    
    return sum_arr.tolist()

 

 

2) 

행: len(arr)

열: len(arr[0]

arr= [[1,2,3],[2,3,4]] # 2*3
print(len(arr)) #2
print(len(arr[0])) #3

 

출력 형식이 [[],[]]  ex)[[4,6],[7,9]]

def solution(arr1, arr2):
    for i in range(len(arr1)):
        for j in range(len(arr1[0])):
            arr1[i][j] = arr1[i][j] + arr2[i][j]
    return arr1
def solution(arr1, arr2):
    answer = []
    for i in range(len(arr1)):
        temp = [] 
        for j in range(len(arr1[0])):
            temp.append(arr1[i][j] + arr2[i][j])#한 행의 결과를 append할 수 있게 함
        answer.append(temp) #그래야지 []안에 []들어감
    return answer

 

 

아래처럼 answer에 바로 append 시

실행한 결괏값 [4,6,7,9]이 기댓값 [[4,6],[7,9]]과 다릅니다.
def solution(arr1, arr2):
    answer = []
    for i in range(len(arr1)):
        for j in range(len(arr1[0])):
            answer.append(arr1[i][j] + arr2[i][j])
    return answer