반응형
def solution(arr1, arr2):
answer = [[]]
for i in range(len(arr1)):
for j in range(len(arr1[0])):
answer.append(arr1[i][j] + arr2[i][j])
print(answer)
return answer
##>>>> output <<<<##
입력값 〉 [[1, 2], [2, 3]], [[3, 4], [5, 6]]
기댓값 〉 [[4, 6], [7, 9]]
실행 결과 〉실행한 결괏값 [[],4,6,7,9]이 기댓값 [[4,6],[7,9]]과 다릅니다.
출력 〉 [[], 4, 6, 7, 9]
정답 행렬(answer)의 shape 잡는 방법을 몰라 헤맸다.
덧셈 연산 결과가 전부 마지막 요소 위치에 몰려서 append 되는데, 해결 방법을 몰라 결국 ChatGPT에게 물어봤다.
##### ChatGPT #####
def solution(arr1, arr2):
# arr1와 같은 차원으로 answer를 초기화합니다.
answer = [[0] * len(arr1[0]) for _ in range(len(arr1))]
for i in range(len(arr1)):
for j in range(len(arr1[0])):
# 해당하는 요소들을 더하고 결과를 answer에 저장합니다.
answer[i][j] = arr1[i][j] + arr2[i][j]
return answer
answer = [[0] * len(arr1[0]) for _ in range(len(arr1))]
answer의 shape을 먼저 잡아준다( 0으로 채우기 )
for _ in range(len(arr1))]: arr1의 행 수 만큼 반복
[0] * len(arr1[0]): arr1의 열 수 만큼 0을 채운다
answer[i][j] = arr1[i][j] + arr2[i][j]
그리고나서 answer에 append 하는게 아니라 덧셈 연산 값을 바로 넣어준다
#### 다른사람 풀이 ####
def solution(A,B):
for i in range(len(A)):
for j in range(len(A[0])):
A[i][j] += B[i][j]
return A
새로운 행렬을 만들 필요 없이, 위치만 잘 잡아서 첫번째 행렬(A)에 두번째 행렬(B)을 더해준다.....!
반응형