티스토리 뷰

https://programmers.co.kr/learn/courses/30/lessons/12950

 

코딩테스트 연습 - 행렬의 덧셈

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요

programmers.co.kr

 


 

이중 for문

function solution(arr1, arr2) {
    const answer = []
    for(let i = 0; i < arr1.length; i++) {
        const sum = []
        for(let j = 0; j < arr1[i].length; j++) {
            sum.push(arr1[i][j] + arr2[i][j])
        }
        answer.push(sum)
    }
    return answer
}
  1. for문으로 배열 순회(i) => [1,2], [2,3]
    1. for문으로 순회한 배열 안의 원소 순회(j)
    2. 입력된 두 배열의 [i][j]번째 원소를 더해 임의의 배열(sum)에 push
  2. i번째 배열의 각 원소를 더해 만든 배열을 다시 새로운 배열(answer)에 push
  3. answer 반환

 

 

map 메서드

function solution(arr1, arr2) {
    return arr1.map((x, i) => x.map((y, j) => y + arr2[i][j])) 
}
  1. arr1의 원소 값에 arr2의 원소 값을 더한 새로운 배열을 반환 (i와 j는 인덱스)

 

 


  • map을 사용하니 보기에는 간결하지만 가독성은 for문이 좋은 것 같다.
  • 행렬 arr1, arr2의 행과 열의 길이가 500이 넘지 않아서 그런지 여기서는 성능 면에서도 큰 차이 없어 보인다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/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
글 보관함