(1) 문제링크

https://programmers.co.kr/learn/courses/30/lessons/12950?language=python3

(2) 문제풀이 및 해설 1

문제풀이

arr1 = [[1,2],[2,3]]
arr2 = [[3,4],[5,6]]

def solution1(arr1, arr2) :
    answer = [];

    for i in range(len(arr1)) :
        tmp = [];
        for j in range(len(arr1[i])) :
            tmp.append(arr1[i][j] + arr2[i][j])

        answer.append(tmp)

    return answer

print(solution1(arr1, arr2))

문제해설

  1. 빈 배열 answer을 생성한다.
  2. for문을 중첩하여 사용하는데 첫번째 for문의 컨테이너는 range()함수를 사용하고 파라미터로 len()함수를 사용하여 0~배열의 len의 리스트로 생성하여 지정한다.
  3. 두번째 내부 for문의 컨테이너 또한 range()함수를 사용하고 파라미터로 len()함수를 사용하여 0~배열 요소 len의 리스트로 생성하여 지정한다.
  4. 반복문의 실행될 때마다 연산을 진행하고 연산이 끝난 값을 배열로 나누어 담아야하기 때문에 첫번째 for문안에 빈 배열 tmp를 생성하여 담아준다.
  5. 배열안의 요소가 연산이 끝난 후 다음 요소로 넘어간 후 다시 배열로 담아야하므로 두번째 for문 반복이 끝난 뒤 answer변수에 tmp를 추가하여준다. 그러면 첫번째 내부 for문이 완전히 종료된 후 [4, 6]이 answer에 추가되고 두번째 사이클로 넘어가게 된다.

(2) 문제풀이 및 해설 2

문제풀이

arr1 = [[1,2],[2,3]]
arr2 = [[3,4],[5,6]]

def solution2(A,B):
    return [list(map(sum, zip(*x))) for x in zip(A, B)]

print(solution2(arr1, arr2))

문제해설

  1. for문을 사용한다. 이 때 zip()함수를 이용하여 각 배열의 요소를 튜플로 짝 지어준다. (ex ([1,2],[3,4]), ([2,3],[5,6]))
  2. 짝 지어진 튜플을 map()함수를 활용하여 파라미터로 받은 자료형에 각 함수를 적용시키는데 함수는 sum을 활용하여 더한다. 이 때 파라미터로 받은 자료형은 zip(*x)가 되는데 *을 활용하여 unzip을 한 것이다. (ex [1,2],[3,4] , [2,3],[5,6]) unzip가 된 파라미터가 sum()함수로 인해 연산이 진행된다.
  3. map()한 연산 값을 list로 출력하기 위해 list()함수를 사용하여 출력한다.

(2) 문제풀이 및 해설 3

문제풀이