코딩테스트/Programmers Level 1
42일차. 행렬의 덧셈
자유로운영혼이다냥
2024. 1. 7. 23:26
링크
https://school.programmers.co.kr/learn/courses/30/lessons/12950
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
문제 설명
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건- 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
정답
solution = lambda arr1, arr2: [[i+j for i, j in zip(arr1[idx], arr2[idx])] for idx in range(len(arr1))]
풀이과정
두 배열은 행렬이므로, 행과 열이 있다.
먼저 각 배열의 idx 번쨰 줄을 가져와보자
for idx in range(len(arr1))
idx 번쨰 배열의 각 항목을 더한 배열을 낸다.
[i+j for i, j in zip(arr1[idx], arr2[idx])]
리스트 컴프리헨션은 [ for idx in list ]의 형태로 for를 쓴 다음에 for 앞에 출력할 결과물을 작성하는것이다. 일일히 append해주는것보다 코스트가 싸다.
그렇게 된 배열을 모든 idx에 대해 처리해주고 그걸 하나의 큰 배열로 묶으면 된다.
[[i+j for i, j in zip(arr1[idx], arr2[idx])] for idx in range(len(arr1))]