[PYTHON] 행렬의 덧셈 문제

2023. 11. 7. 14:38DATA PROGRAMMING/PYTHON

출처 : 프로그래머스 코딩테스트 문제

 

 

내 코드

 

arr1 = [[1,1],[2,2]]
arr2 = [[3,3],[4,4]]
answer = [[]]
for i in range(len(arr1)):
    for j in range(len(arr1[0])):
        answer[i][j] = arr1[i][j] + arr2[i][j]

해당 코드는 아래와 같은 에러가 나는데 이유는 answer는 비어있는 리스트 즉, Null 값이기 때문이다. 이렇게 비어있는 리스트에는 인덱싱을 통해 값을 대입할 수 없으므로 append() 함수를 이용해야 한다.

 

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

문제에서는 더 고차원의 행렬또한 다루기를 요구했으므로 zip함수를 사용할 생각을 했다.

 

 

def solution(arr1, arr2):
    result = []
    for a, b in zip(arr1, arr2):
        sum = []
        for i, j in zip(a, b):
            sum.append(i + j)
        result.append(sum)
    return result

 

zip함수를 통해 arr1, arr2 의 더해질 행끼리 먼저 for문을 써주고 각각의 선택된 a, b의 행의 첫번째 값부터 차례로 더해가며 sum이라는 리스트에 값들을 추가한다. 마지막으로 sum에 저장된 값을 result에 다시 추가하면 원하는 결과를 얻을 수 있다. 이 방법을 사용하면 굳이 for문의 범위를 지정하지 않아도 되기에 편리하다.