Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

김찬양의 개발일지

42일차. 행렬의 덧셈 본문

코딩테스트/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))]