[프로그래머스][LV.1] 행렬의 덧셈 | python3
2025. 1. 17. 18:29ㆍ프로그래머스/LV.1
문제 링크: 행렬의 덧셈
문제 설명
문제 설명
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
제한사항
- 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
문제 풀이
answer에 미리 리스트 형태를 만들어놔야한다.
answer의 형태를 미리 만들어 놓고 주어진 배열의 인덱스를 돌아서 주어진 배열의 인덱스에 해당되는 값들을 더한 값을 answer의 해당하는 인덱스에 넣는다.
내코드
def solution(arr1, arr2):
answer = [[0 for _ in range(len(arr1[0]))] for _ in range(len(arr1))]
for i in range(len(arr1)):
# print(i)
for j in range(len(arr1[0])):
# print(i,j)
answer[i][j]=arr1[i][j]+arr2[i][j]
# answer.append(arr1[i][j]+arr2[i][j])
return answer
더보기
다른사람풀이
def sumMatrix(A,B):
answer = [[c + d for c, d in zip(a,b)] for a, b in zip(A,B)]
return answer
리스트 컴프리헨션과 zip을 활용해서 이렇게 간단하게 표현할 수 있다니
def sumMatrix(A,B):
return [list(map(sum, zip(*x))) for x in zip(A, B)]
zip(*x) (언패킹과 zip의 조합)
- 설명: zip(*x)는 x의 각 요소를 언패킹하여 행 대신 열 단위로 묶어줍니다.
- 작동 방식:
x = ([1, 2], [5, 6]) zip(*x)# 결과: [(1, 5), (2, 6)]
리스트 내포 (List Comprehension)
- 설명: 리스트 내포는 리스트를 간결하게 생성하기 위한 파이썬의 문법입니다.
- 용법:
[list(map(sum, zip(*x))) for x in zip(A, B)]
- for x in zip(A, B)는 A와 B의 각 행을 튜플로 묶어서 순회합니다.
- 각 x에 대해 zip(*x)로 열 단위로 묶고, 그 열들을 sum으로 더해 새로운 리스트를 만듭니다.
이걸 사고하고 표현하는 게 쉽지 않을 것 같은데 대단하다.
'프로그래머스 > LV.1' 카테고리의 다른 글
[프로그래머스][LV.1] 문자열 다루기 기본 | python3 (0) | 2025.01.17 |
---|---|
[프로그래머스][LV.1] 가운데 글자 가져오기 | python3 (0) | 2025.01.17 |
[프로그래머스][LV.1] 문자열 내림차순으로 배치하기 | python3 (0) | 2025.01.17 |
[프로그래머스][LV.1] 수박수박수박수박수박수? | python3 (0) | 2025.01.17 |
[프로그래머스][LV.1] 내적 | python3 (0) | 2025.01.16 |