문제
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 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[]를 [[]]로 초기화하고 이 코드를 사용할 경우 처음에 빈 리스트가 생김 → []로 초기화
다른 사람 풀이
'Python > 프로그래머스' 카테고리의 다른 글
[프로그래머스 lv.1] 직사각형 별찍기 (0) | 2023.08.29 |
---|---|
[프로그래머스 lv.1]x만큼 간격이 있는 n개의 숫자 (0) | 2023.08.29 |
[프로그래머스 level1] 핸드폰 번호 가리기 (0) | 2023.08.28 |
[프로그래머스 level1] 하샤드 수 (0) | 2023.08.28 |
[프로그래머스 level1] 평균 구하기 (0) | 2023.08.28 |