행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 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]] |
def solution(arr1, arr2):
result = []
for x, y in zip(arr1, arr2):
new = [z+k for z,k in zip(x, y)]
result.append(new)
return result
배열이 길이가 같은 리스트의 연산에는 zip만한게 없습니다.
이중리스트여도 결국엔 리스트로 한 층 씩파고들어서 연산을 하면 되는 문제입니다. zip으로 순회를 하고 순회를 한 리스트를 다시 한 번더 zip으로 순회한 리스트컴프리헨션을 만들고 이걸 최종 빈 배열에 넣어주는것을 반복하면 문제가 원하는 행렬의 덧셈이 완성됩니다.
def solution(arr1,arr2):
return [[z + k for z, k in zip(x, y)] for x, y in zip(arr1,arr2)]
이런식으로 한 줄로도 정리가 가능합니다.
import numpy
def solution(arr1, arr2):
arr1 = numpy.array(arr1)
arr2 = numpy.array(arr2)
answer = arr1 + arr2
return answer.tolist()
행렬의 관한 연산에는 파이썬에는 numpy
라는 강력한 라이브러리가 존재합니다. 이를 활용하면 정수 덧셈/뺄셈처럼 손쉽게 결과값을 도출할 수 있습니다.
기존의 array(list)를 numpy.array로 바꾸고 연산을 한 후, 다시 리스트로 변환시키면 됩니다.