-
프로그래머스 - 행렬의 덧셈알고리즘 2022. 1. 21.반응형
내 풀이
파이썬
def solution(arr1, arr2): answer = [] for i in range(len(arr1)): x = [] for j in range(len(arr1[0])): x.append(arr1[i][j] + arr2[i][j]) answer.append(x) return answer
배열의 길이를 이용해서 이중 for문으로 처리
각 배열의 총 크기만큼은 반복을 해야하니까 처음에는 arr1의 크기 만큼 반복 (arr1, arr2의 배열 크기는 어차피 같으니까 1이나 2 어느쪽으로 하던 상관 없음)
이제 합을 구해서 다시 배열에 넣어야 하니까 x라는 변수에 빈 방 생성
안에 for 반복문을 한번 더 넣어서 합 구하기 반복문 시작
한번 사이클에 j가 arr1[0] 의 크기 만큼 돌아야함 = 2차원 배열의 방 크기만큼 반복문이 돌아야함
테스트 코드 예시를 보면 2차원 배열인 경우도 있고 아닌 경우도 있음.
그렇게 나온 합계를 x에 넣고
두번째 for문이 끝나고 첫번째 for문으로 다시 돌아올때 그 값을 answer 방에 넣어줌
다른 사람 풀이
파이썬
def sumMatrix(A,B): answer = [[c + d for c, d in zip(a, b)] for a, b in zip(A,B)] return answer # 아래는 테스트로 출력해 보기 위한 코드입니다. print(sumMatrix([[1,2], [2,3]], [[3,4],[5,6]]))
한줄 for문과 zip을 활용한 방식
천천히 해석을 해보면 처음에 for a,b in zip(A,B) 부분 부터 인자 A,B가 들어가서 zip의 영향으로
a = [1,2],[5,6]
b = [3,4],[7,8]
이렇게 바뀐다.
그리고 나서 이 a,b가 다시 zip 인자로 들어가서 반복문을 다시 돌린다.
a,b가 c,d에 담기는데
c = [1,2],[3,4]
d = [5,6],[7,8]
이 된다.
그리고 c+d의 계산대로 [1,2]랑 [5,6]이 더해져 [6,8]이 되고 [3,4]랑 [7,8]이 더해져서 [10,12]가 된다.
다른 방법
def sumMatrix(A,B): for i in range(len(A)) : for j in range(len(A[0])): A[i][j] += B[i][j] return A # 아래는 테스트로 출력해 보기 위한 코드입니다. print(sumMatrix([[1,2], [2,3]], [[3,4],[5,6]]))
이중 for문이고 행렬의 전체 크기와 2차원 배열의 크기 만큼 도는건 똑같지만
반복문 안의 내용이 다르다.
+=를 활용해서 한번에 계산한 모습
반응형'알고리즘' 카테고리의 다른 글
프로그래머스 - 평균 구하기 (0) 2022.01.26 프로그래머스 - 하샤드 수 (0) 2022.01.25 프로그래머스 - 핸드폰 번호 가리기 (0) 2022.01.25 프로그래머스 - x만큼 간격이 있는 n개의 숫자 (0) 2022.01.19 프로그래머스 - 직사각형 별 찍기 (0) 2022.01.18