안녕하세요.
강렬한 스포트라이트 입니다!
하기의 문제를 Python 언어를 사용하여 구현하고자 합니다.
<문제 설명>
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 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]] |
1) 중첩 for문을 사용하여 arr1, arr2의 행과 열을 합산해주고,
arr1 첫 행의 갯수만큼(arr2여도 상관없음) result1의 원소를 묶어서 구현한 코드입니다.
def solution(arr1, arr2):
result1=[];result2=[]
for i in range(len(arr1)): #두 행,열의 값을 합산하여 result1에 넣음
for j in range(len(arr1[i])):
result1.append(arr1[i][j]+arr2[i][j])
for k in range(0,len(result1),len(arr1[0])): #첫 행의 갯수만큼 묶어서 result2에 넣음
result2.append(result1[k:k+len(arr1[0])])
return result2
2) 상기의 코드에서 arr1에 누적하여 더 간결하게 구현한 코드입니다.
def solution(arr1, arr2):
for i in range(len(arr1)):
for j in range(len(arr1[i])):
arr1[i][j]+=arr2[i][j]
return arr1
3) zip() 함수의 사용으로 행렬의 덧셈을 더 간편하게 구현한 코드입니다.
def solution(arr1, arr2):
return [[i+j for i,j in zip(a1,a2)] for a1,a2 in zip(arr1,arr2)]
해보시고 문의사항이 있으시면 댓글로 남겨주세요.´◡`
감사합니다!
반응형
SMALL
'PS > programmers' 카테고리의 다른 글
[LV. 1] 숫자 문자열과 영단어(Python) (1) | 2023.03.29 |
---|---|
[Lv. 1] 콜라츠 추측(Python) (0) | 2023.03.28 |
[Lv. 1] 이상한 문자 만들기(Python) (0) | 2023.03.24 |
[Lv. 1] 같은 숫자는 싫어(Python) (0) | 2023.03.23 |
[Lv. 1] 최대공약수와 최소공배수(Python) (0) | 2023.03.21 |