본문 바로가기
Algorithm/프로그래머스

[프로그래머스] : 행렬의 덧셈 파이썬 풀이

by 오주현 2022. 1. 26.
반응형
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행,
같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아,
행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.

문제 설명

행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.

제한 조건

arr1	arr2	return
[[1,2],[2,3]]	[[3,4],[5,6]]	[[4,6],[7,9]]
  [[1],[2]]	    [[3],[4]]	    [[4],[6]]

입출력 예시

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

풀이 코드


def solution(arr1, arr2):

문제에서 원하는 결과를 넘겨주는 solution 함수를 만들어야 한다. 리스트 두 개가 주어지고 각 리스트의 같은 번쨰 수를 더한 리스트를 출력해 주면 된다.

for i in range(len(arr1)):

일단 반복해서 더해줘야 한다는 개념을 생각하면 for문을 사용하게 된다. for문을 통해 처음 받은 리스트의 길이만큼 반복을 실행해 준다. 2중 리스트를 쓰고 있으므로 리스트 안에 리스트가 몇 개가 있는지 확인하고 그 수 만큼 반복하는 것이다.

for j in range(len(arr[i])):

2중 리스트에서 2번째 리스트 값 만큼 반복을 해주기 위해 for 문을 만들어 준다.

arr1[i][j] += arr2[i][j]

각 자리수 별로 더해주고

return arr1

리턴을 해주면 끝이다.

프로그래머스에서는 answer로 리턴을 해줘야 하니까 answer에 담아서 제출하면 된다.

이해가 잘 가지 않는다면 아래 코드를 참고하자

def solution(arr1, arr2):

    for i in range(len(arr1)):
        print(i, ' i값')

        for j in range(len(arr1[i])):
            print(j, ' j값')
            arr1[i][j] += arr2[i][j]

    return arr1

print(solution([[1,2],[2,3]],[[3,4],[5,6]]))

이해를 돕기 위한 코드

0  i값
0  j값
1  j값
1  i값
0  j값
1  j값
[[4, 6], [7, 9]]

이해를 돕기 위한 코드의 출력값

반응형

댓글