프로그래밍/프로그래머스 문제

[프로그래머스] Level1. 행렬의 덧셈

렁례림 2020. 6. 3. 12:31

문제 설명

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

 

제한 조건

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

입출력 예

[[1,2],[2,3]] [[3,4],[5,6]] [[4,6],[7,9]]
[[1],[2]] [[3],[4]] [[4],[6]]

 

풀이

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

 같은 형태의 행렬이 주어지기 때문에 하나의 행렬을 기준으로 for문을 작성했다. len(arr1)은 세로의 길이이고 lens(arr1[i])는 가로의 길이이다. 활용하여 하나의 원소에 각각 접근하여 더한 후 답을 구하였다. 비슷한 방법이지만 

열거법으로 한 줄로 나타내기도 가능하다.

(1)

def sumMatrix(A,B):
    answer = [[A[i][j] + B[i][j] for j in range(len(A[0]))] for i in range(len(A))]

    return answer

(2) zip을 활용

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

http://pyengine.blogspot.com/2014/03/python-zip.html 참고하였다.