level1_행렬의 덧셈

2024. 2. 4. 16:47파이썬_알고리즘(코딩테스트)/level1

 

내가 제출한 코드

def solution(arr1, arr2):
	for i in range(len(arr1)):
    	for j in range(len(arr1[0])):
        	arr1[i][j] += arr2[i][j]
    return arr1

 

tistory에서 코드 for문 밑에 이중 for문을 들여쓰기를 해주는데.. 자꾸 같은 줄에... 나오는 거같다....

 

우선 2차원 리스트는 행, 열(세로, 가로) 순으로 접근한다.

리스트[세로인덱스][가로인덱스]

for i in range(len(arr1)): # 세로크기 2
     for j in range(len(arr1[0])): # 가로 크기 arr1[0] : [1,2] ( 입출력 예로) -> 2

 

arr1[i][j] += arr2[i][j]arr1i번째 행과 j번째 열에 위치한 요소에 arr2의 동일한 위치(i번째 행, j번째 열)에 있는 요소를 더한다.

 

다른 사람이 제출한 코드

def sumMatrix(A,B):
	answer = [[c + d for c, d in zip(a,b)] for a, b in zip(A,B)]
    return answer

 

예를 들어

  • A = [[1, 2], [3, 4]]
  • B = [[5, 6], [7, 8]]

- 행렬 묶기

    - zip(A,B)를 통해 A와 B의 각 행을 짝지어 준다. 

    - 첫 번째 행끼리 짝이 지어지고, 두 번째 행끼리 짝이 지어진다.

    - A, B의 결과 : [([1, 2], [5, 6]), ([3, 4], [7, 8])]

    

-  요소별 합 계산

    - c + d으로 새로 만들어진 행에서는 c는 A의 요소, d는 B의 요소이다. 

 

따라서 함수는 [[6, 8], [10, 12]]를 결과로 반환