[파이썬 코드카타]
행렬의 덧셈
https://school.programmers.co.kr/learn/courses/30/lessons/12950
1) 어떤 문제가 있었나
2중 리스트로 이뤄진 2개의 행렬의 각 원소를 더해서 반환하는 문제
2) 내가 시도해본 건 무엇인가
지난주 코드카타를 통해 배운 for문 + zip 함수를 활용해 arr1과 arr2를 동시에 출력한 뒤,
동일한 위치에 있는 원소들의 합계 값을 구하고자 했으나 각 값을 리스트 안에 리스트에 적절히 넣기 어려웠음
arr1 = [[1,2],[2,3]]
arr2 = [[3,4],[5,6]]
# return = [[4,6],[7,9]]
# index 순서를 활용
for i in range(len(arr1)):
for j in range(len(arr1[i])):
print(arr1[i][j] + arr2[i][j])
# zip 함수를 활용
for i, j in zip(arr1, arr2):
for n, m in zip(i, j):
print(n + m)
# 출력 값은 동일함
# 4
# 6
# 7
# 9
3) 어떻게 해결했나
- 각 for문이 끝날 때마다 어떤 값이 나오는지 헷갈려서, print(i, j), print(k) 등을 중간중간 기입
- 반환 값을 통해 파이썬 루프가 어떻게 돌아가는지 살펴보면서 리스트에 어떻게 담을 수 있을지 고민해봄
- 빈 리스트를 내/외부에 위치시켜 answer1에는 값이 누적되고, answer2에는 1 루프 후 값이 초기화 되도록 설정
def solution(arr1, arr2):
answer1 = []
for i, j in zip(arr1, arr2):
answer2 = []
for k in range(len(arr1[0])):
answer2.append(i[k]+j[k])
answer1.append(answer2)
return answer1
4) 무엇을 새롭게 알았나
- list.append() 활용 시, 이런 방식으로도 활용 가능 > answer.append([])
- 한 줄 코드 진행 시 별도 append 없이 중괄호 처리로 진행 가능
# 다른 사람 풀이
def sumMatrix(A,B):
answer = [[c + d for c, d in zip(a,b)] for a, b in zip(A,B)]
return answer
'TIL' 카테고리의 다른 글
[240229] SQL: 코드카타 145 & 파이썬: 코드카타 39 (0) | 2024.02.29 |
---|---|
[240228] SQL: 코드카타 143~144 & 파이썬: 코드카타 38(map, index, strip) (4) | 2024.02.28 |
[240226] SQL: 코드카타 132~140(right/left) & 파이썬: 코드카타 36(isdecimal/isdigit/isnumeric) (0) | 2024.02.26 |
[240223] SQL: 코드카타 131 & 파이썬: 코드카타 35 (0) | 2024.02.23 |
[240223] 태블로(Tableau) - 매출 대시보드 만들기 (0) | 2024.02.23 |