문제 설명
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
- 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
입출력 예
arr1 | arr2 | return |
[[1,2],[2,3]] | [[3,4],[5,6]] | [[4,6],[7,9]] |
[[1],[2]] | [[3],[4]] | [[4],[6]] |
내 풀이
행과 열의 길이가 같으므로 arr1을 기준으로 행과 열의 개수를 셈
arr1과 arr2의 같은 행, 열 값을 더하여 arr1 행,열에 대입
arr1의 바뀐 값은 다시 참고하지 않으므로 바꾸어도 상관없음
def solution(arr1, arr2):
for i in range(len(arr1)):
for j in range(len(arr1[0])):
arr1[i][j] = arr1[i][j] + arr2[i][j]
return arr1
다른 사람 풀이1
zip을 이용
zip을 통해 A, B 두 개의 배열 데이터를 엮음
A = [[1,2],[2,3]] B = [[3,4],[5,6]] 이라면
첫 번째 for 문에서 a = [1,2] b = [3,4]
a,b를 다시 zip으로 묶음
첫 번째 for문에서 c = 1 d = 3 -> c+d = 4
두 번째 for문에서 c = 2 b = 4 -> c+d = 6
[4,6] 인 리스트 생성
바깥의 for 문 다시 수행
def sumMatrix(A,B):
answer = [[c + d for c, d in zip(a, b)] for a, b in zip(A,B)]
return answer
다른 사람 풀이2
numpy를 import 하여 사용
A,B를 넘파이 배열로 만들고 A+B 연산을 통해 행과 열을 더함
tolist()를 통해 array를 list로 변환하여 return
import numpy as np
def sumMatrix(A,B):
A=np.array(A)
B=np.array(B)
answer=A+B
return answer.tolist()
728x90
'코딩테스트' 카테고리의 다른 글
[프로그래머스/파이썬] 직사각형 별찍기 (0) | 2022.09.25 |
---|---|
[프로그래머스/파이썬] 부족한 금액 계산하기 (0) | 2022.09.25 |
[프로그래머스/파이썬] 약수의 개수와 덧셈 (0) | 2022.09.25 |
[프로그래머스/파이썬] 문자열 다루기 기본 (0) | 2022.09.24 |
[프로그래머스/파이썬] 문자열 내림차순으로 배치하기 (0) | 2022.09.24 |