250x250
Notice
Recent Posts
Recent Comments
Link
«   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
Archives
Today
Total
관리 메뉴

devlog_owen

[프로그래머스] 행렬의 덧셈 본문

algorithm/(js)프로그래머스

[프로그래머스] 행렬의 덧셈

developer_owen 2023. 11. 1. 20:34
728x90

 

너무 어려워요... 하다가 순간 행렬이 어떻게 생긴거더라?하면서 행렬 생김새 구글링함.

배열 안에 또 배열들이 있어서 이것도 직사각형 별찍기처럼 어떻게 접근해야 할지 감도 안왔음.

배열 안의 요소들을 건드리려면 뭔가 map을 써도 좋을것같아서 또 구글링함.


나의 풀이

function solution(arr1, arr2) {
  return arr1.map((row, rowIndex) =>
    row.map((element, colIndex) => element + arr2[rowIndex][colIndex])
  );
}

map 메서드를 이용해서 풀었다. 비교적 간결한 코드여서 좋지만 사실 이해하는게 어려웠다. 

내 풀이에는 map 함수가 두번 들어간다. 먼저 외부 map함수는 arr1을 순회하면서 arr1의 행렬을 나타낸다.

row는 arr1의 [a,b],[c,d], rowIndex는 각 행렬의 인덱스를 나타낸다.

내부 map함수에서는 첫번째 루프에서의 행[a,b]의 열요소를 순회한다. element는 a,b이고 colindex는 0,1이다.

첫번째 루프에서 element인 a와 arr2의 [0][0]요소인 e랑 더하고 b와 [0][1]요소인 f와 더한다. 

두번째 루프에서는 위와 비슷한 느낌으로 arr1의 c,d를 각각 arr2의 인덱스요소들과 더해서 반환한다.

 

 


다른사람 풀이

 

function solution(arr1, arr2) {
    var answer = [[]];
    for (var i=0; i<arr1.length; i++){
        answer[i] =[];
        for(var j=0; j<arr1[i].length; j++){
            answer[i].push(arr1[i][j] + arr2[i][j]);
        }
    }
    return answer;
}

 

이중 반복문으로 행렬 덧셈을 함. 사실 구글링했을때 가장 많이 보인 풀이였다.

answer[i].push(arr1[i][j] + arr2[i][j]);

이 부분도 처음봤다. 행렬 덧셈연산 구문이라는데 좀더 이해가 필요할 듯. 

728x90