행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 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