Python/프로그래머스

[프로그래머스 lv.1]행렬의 덧셈

묘걍 2023. 8. 29. 16:08

문제

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

<제한 조건>

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

내가 생각한 풀이 방법

이중 for문 사용

answer[n][m] = arr1[n][m] + arr2[n][m] 

 

코드로 구현

1차 시도

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

- answer가 정의되어있지 않은데 무작정 넣으려고 해서 그런 것 같다?

(자세히 말하면 answer[i][j] 자리가 없는데 넣으려고 해서?)

 

2차 시도

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

- append로 바꿔봤는데 안된다

- append로 하면 행렬이 생성되는 게 아니라 그냥 배열이 생성될 것 같다는 생각이 든다. 이 부분을 어떻게 해결해야할까

      → 새로운 i가될 때 마다 [ ]를 만들어줘야한다..

 

3차 시도

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

- 중간에 빈 배열을 만들어줘서 한 행 내의 결과값을 배열에 넣고 answer에 append하고 다시 새로운 빈 배열을 만들고...의 반복으로 만들어봤다

 

4차 시도

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

- 초기화 실수,,

- answer[]를 [[]]로 초기화하고 이 코드를 사용할 경우 처음에 빈 리스트가 생김 → []로 초기화

다른 사람 풀이