행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
zip에 대한 추가 공부가 필요하다는 것을 느꼈다.zip을 사용하지 않고 for loop를 돌며 행렬만 더해보려고 했는데, 그 부분은 잘 되질 않았다. arr1 = [[1,2],[2,3]]
arr2 = [[3,4],[5,6]]
for i, j in zip(arr1, arr2):
print(zip(arr1, arr2))
print(i)
print(j)
# 출력
<zip object at 0x7ff95807cf80>
[1, 2]
[3, 4]
<zip object at 0x7ff958080040>
[2, 3]
[5, 6]
arr1 = [[3,4],[5,6],[7,8]]
arr2 = [[4,3],[5,4],[8,7]]
for i, j in zip(arr1, arr2):
print(zip(arr1, arr2))
print(i)
print(j)
# 출력
<zip object at 0x7f88101ecfc0>
[3, 4]
[4, 3]
<zip object at 0x7f88101f1080>
[5, 6]
[5, 4]
<zip object at 0x7f88101f1080>
[7, 8]
[8, 7]
arr1 = [5,4,3,6,8]
arr2 = [7,4,2,7,8]
for i, j in zip(arr1, arr2):
print(zip(arr1, arr2)
print(arr1)
print(arr2)
# 출력
<zip object at 0x7f98801f0040>
5
7
<zip object at 0x7f98801f0040>
4
4
<zip object at 0x7f98801f0040>
3
2
<zip object at 0x7f98801f0040>
6
7
<zip object at 0x7f98801f0040>
8
8
arr1 = ['Java', 'Python', 'JavaScript']
arr2 = [14, 3, 6]
for i, j in zip(arr1, arr2):
print(zip(arr1, arr2)
print(arr1)
print(arr2)
<zip object at 0x7f92201d0080>
Java
14
<zip object at 0x7f92201d0080>
Python
3
<zip object at 0x7f92201d0080>
JavaScript
6
def solution(arr1, arr2):
result = []
middle = []
for mid_arr1, mid_arr2 in zip(arr1, arr2):
for i, j in zip(mid_arr1, mid_arr2):
middle.append(i+j) # [4], [4,6] .. 등의 결과를 받고,
result.append(middle) # 이 부분에서 리스트가 하나 더 추가되어 아래와 같은 결과값을 반환
return result
# 결과
테스트 1
입력값 〉 [[1, 2], [2, 3]], [[3, 4], [5, 6]]
기댓값 〉 [[4, 6], [7, 9]]
실행 결과 〉 실행한 결괏값 [[4,6,7,9]]이(가) 기댓값 [[4,6],[7,9]]와(과) 다릅니다.
테스트 2
입력값 〉 [[1], [2]], [[3], [4]]
기댓값 〉 [[4], [6]]
실행 결과 〉 실행한 결괏값 [[4,6]]이(가) 기댓값 [[4],[6]]와(과) 다릅니다.
리스트 안에 리스트를 넣어야 하므로 이중 리스트를 만들어주려고 했다. 하지만 실패했다. 모든 요소가 한 번에 리스트에 들어간 형태가 아니라, 각 각의 값을 더한 행렬 자체가 리턴이 되어야 하는데, 이 부분에서 막혀서 시간을 소비했다.
코드를 보면 당연한 결과지만.. 어려웠다.
result = []
for mid_arr1, mid_arr2 in zip(arr1, arr2):
middle = []
for i, j in zip(mid_arr1, mid_arr2):
middle.append(i+j)
# print(middle)
result.append(middle)
print(result)
# 출력
테스트 1
입력값 〉 [[1, 2], [2, 3]], [[3, 4], [5, 6]]
기댓값 〉 [[4, 6], [7, 9]]
실행 결과 〉 테스트를 통과하였습니다.
테스트 2
입력값 〉 [[1], [2]], [[3], [4]]
기댓값 〉 [[4], [6]]
실행 결과 〉 테스트를 통과하였습니다.
이렇게 수정하여 통과하였다.
빈 리스트를 먼저 만들어주고, 중간 리스트를 담을 변수를 첫 번째 반복문 안에 만들어주고 그 그릇에 데이터를 담아 반환하는 방식.
https://www.programiz.com/python-programming/methods/built-in/zip