[PYTHON] 행렬의 덧셈 문제
2023. 11. 7. 14:38ㆍDATA PROGRAMMING/PYTHON
출처 : 프로그래머스 코딩테스트 문제
내 코드
arr1 = [[1,1],[2,2]]
arr2 = [[3,3],[4,4]]
answer = [[]]
for i in range(len(arr1)):
for j in range(len(arr1[0])):
answer[i][j] = arr1[i][j] + arr2[i][j]
해당 코드는 아래와 같은 에러가 나는데 이유는 answer는 비어있는 리스트 즉, Null 값이기 때문이다. 이렇게 비어있는 리스트에는 인덱싱을 통해 값을 대입할 수 없으므로 append() 함수를 이용해야 한다.
def solution(arr1, arr2):
answer=[[],[]]
for i in range(len(arr1)):
for j in range(len(arr1[0])):
answer[i].append(arr1[i][j]+arr2[i][j])
문제에서는 더 고차원의 행렬또한 다루기를 요구했으므로 zip함수를 사용할 생각을 했다.
def solution(arr1, arr2):
result = []
for a, b in zip(arr1, arr2):
sum = []
for i, j in zip(a, b):
sum.append(i + j)
result.append(sum)
return result
zip함수를 통해 arr1, arr2 의 더해질 행끼리 먼저 for문을 써주고 각각의 선택된 a, b의 행의 첫번째 값부터 차례로 더해가며 sum이라는 리스트에 값들을 추가한다. 마지막으로 sum에 저장된 값을 result에 다시 추가하면 원하는 결과를 얻을 수 있다. 이 방법을 사용하면 굳이 for문의 범위를 지정하지 않아도 되기에 편리하다.
'DATA PROGRAMMING > PYTHON' 카테고리의 다른 글
[PYTHON] 머신러닝 연관규칙을 활용한 식단 추천 (0) | 2023.11.27 |
---|---|
[PYTHON] SVM을 활용해 분류하고 시각화 하기 (0) | 2023.11.20 |
[PYTHON] 문자열 다루기 기본 (0) | 2023.11.06 |
[PYTHON] 문자열 내림차순으로 배치하기 (0) | 2023.11.06 |
[PYTHON] 코딩테스트 문제 풀이 - 가운데 글자 가져오기 (0) | 2023.10.26 |