처음에는 리스트내에 값끼리 합산이 가능한지 확인하기 위해
a1=[1,2]
a2=[2,3]
print(a1+a2)
아...이거는 그냥 리스트끼리 합쳐지는거지 안에 있는 요소끼리 합산은 아니구나 확인함
이걸로는 안되겠고 그럼 뭘 해야 할까?
행렬끼리 더할때는 일단 n * n 행렬에서 행과 열을 맞춰야 되는데, 그럼 이걸 요소로 해서 고등학교때 배운 지식 출동
(a11 a12)
(a21,a22)
행렬이 이런식으로 구분할 수 있으니 그럼 행과 열을 각각 i, j 로 대응하여
(a11+b11, a12+b12)
(a21+b21, a22+b22)
이런식으로 해야겠네 까지 생각을 전개함
그렇게 처음 짜본 코드는 아래와 같음
def solution(arr1,arr2):
answer=[]
for i in range(0,len(arr1[0])):
arr3=[]
for j in range(0,len(arr2[0])):
arr3.append(arr1[i][j]+arr2[i][j])
answer.append(arr3)
return answer
print(solution([[1,2],[2,3]],[[3,4],[5,6]]))
print(solution([[1],[2]],[[3],[4]]))
2 * 2 행렬은 제대로 작성하는데 1 * 2 가 작동을 안하네.
머리를 굴리기 시작
i를 len(arr1[0]) 으로 하게 되면 0 부터 2 까지니까 행은 0과 1이 작동
j를 len(arr2[0])으로 하게 되면 0부터 2 까지니까 열은 0과 1이 작동
근데 이렇게 되면 2*2는 제대로 작동 하게 되나
1*1에서 문제가 발생하게 됨
왜냐면 ([1],[2]) + ([3],[4]) 의 경우 위의식을 사용하게 되면
i는 [1] 이니까 1
j는 [3] 이니까 1
1*2 행렬이 아니라 1*1 행렬이 도출되게 됨 그러므로 i 와 j 의 range 범위를 재조정함
def solution(arr1,arr2):
answer=[]
for i in range(0,len(arr1)):
arr3=[]
for j in range(0,len(arr2[0])):
arr3.append(arr1[i][j]+arr2[i][j])
answer.append(arr3)
return answer
len(arr1[0]) 을 len(arr1) 로 변경하여 1*2 행렬의 경우에도 2개가 대입되고 len(arr2) 대신 len(arr2[0]) 을 활용하여 값요소 카운팅을 맞춤
사실 지금도 어떤게 행이고 열인지 명확히 개념적으로 다가오지는 않으나, 추후에 해당 문제 한번더 고민해봐야겠다.
성공!
'TIL' 카테고리의 다른 글
240626-(S) 조건별로 분류하여 주문상태 출력하기 (0) | 2024.06.26 |
---|---|
240625-(P) 라이브세션 1회차 과제 (0) | 2024.06.25 |
240625-(S) 37.조건에 맞는 도서와 저자 리스트 출력 (0) | 2024.06.25 |
240624-(S) 36.보호소에서 중성화 한 동물 (0) | 2024.06.24 |
240624-(P) 33.약수의 개수와 덧셈 / 35.부족한 금액 계산하기 / 36.문자열 다루기 기본 (0) | 2024.06.24 |