[파이썬/python] 프로그래머스 : 행렬의 덧셈 (Lv.1) (feat. zip, 컴프리헨션)

https://school.programmers.co.kr/learn/courses/30/lessons/12950

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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

 

 

다른 사람의 풀이를 보니 리스트 컴프리헨션과 zip을 이용하여 간단하게 풀었다.

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

 

배열안에 또 배열이 들어 있는 형태이기 때문에 for를 두 번 써야 한다. (A[1] + B[1]와 같은 형태가 아닌 A[0][1] + B[0][1]와 같은 형태이기 때문에)

처음에는 배열안에 있는 배열을 zip과 for를 이용하여 a,b로 풀어준 후, 또 zip(a,b)를 c,d로 풀어주어 c+d를 계산하여 답이 도출되게 하였다.

 

 

이런 배열이 있고 각각 -1을 해주어 [[0,1],[2,3]]으로 만들고 싶다고 해 보자.

 

array[i]가 되어 i는 [1,2] 와 [3,4]가 된다

 

첫 번째 array[i]의 j는 1,2

두 번째 array[i]의 j는 3,4가 된다

각각의 j에다 -1을 해주면 원하는 결괏값이 나온다.

이렇게 두 번의 과정을 걸쳐 답을 도출해낼 수 있다.

 

위와 같이 두 개의 배열을 더하거나 빼려면

이 과정에서 zip만 이용하면 간단하게 연산할 수 있는 것이다

이런 식으로.

comment