문제 설명
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
제한사항
- 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
입출력 예
코드
def solution(arr1, arr2):
answer = [[0 for j in range(len(arr1[i]))] for i in range(len(arr1))]
for i in range(len(arr1)):
for j in range(len(arr1[i])):
answer[i][j] = arr1[i][j] + arr2[i][j]
return answer
풀이
[[0 for j in range(len(arr1[i]))] for i in range(len(arr1))] 이와 같이 2차원 배열을 arr1의 길이만큼 0으로 초기화해준다.
arr1, arr1[i] 만큼 반복문을 돌려 arr1, arr2배열에 같은 자리에 있는 수끼리 더해 answer에 할당해준다.
다른 코드와 풀이
아래의 코드는 다른 사람들이 작성한 것들로, 내 코드와 비교, 참고하기 위해 가져왔다.
1️⃣
def sumMatrix(A,B):
answer = [[c + d for c, d in zip(a,b)] for a, b in zip(A,B)]
return answer
zip()을 이용해 A, B의 같은 자리에 있는 수끼리 묶어준다. 2차원 배열이기 때문에 그렇게 묶어준 리스트를 또 묶어준다. 그렇게 묶어준 리스트의 같은 자리에 있는 수끼리 더해줘 answer에 할당한다.
2️⃣
def sumMatrix(A,B):
return [list(map(sum, zip(*x))) for x in zip(A, B)]
zip()을 이용해 A, B의 같은 자리에 있는 수끼리 묶어준 후 언패킹(*x => x를 언패킹한것)을 통해 튜플을 분해해 각 위치별로 합을 계산하여 list로 변환한 값을 리턴해준다.
3️⃣
import numpy as np
def sumMatrix(A,B):
A_np = np.array(A)
B_np = np.array(B)
result = A_np + B_np
return result.tolist()
리스트 A, B를 numpy배열로 변환하여 각 변수에 넣어준 후 둘을 더해주고, 그 값을 리스트로 변환해준다.
정리
Numpy
: 다차원 배열을 쉽게 처리하고 효율적으로 사용할 수 있도록 지원하는 파이썬의 패키지
'Coding Test' 카테고리의 다른 글
231026 같은 숫자는 싫어 - Level 1 (0) | 2023.10.26 |
---|---|
231025 최대공약수와 최소공배수 - Level 1 (0) | 2023.10.25 |
231023 문자열 다루기 기본 - Level 1 (0) | 2023.10.23 |
231022 부족한 금액 계산하기 - Level 1 (1) | 2023.10.22 |
231020 문자열 내림차순으로 배치하기 - Level 1 (0) | 2023.10.20 |