devlog_owen
[프로그래머스] 행렬의 덧셈 본문
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
'algorithm > (js)프로그래머스' 카테고리의 다른 글
[프로그래머스] 같은 숫자는 싫어요 (0) | 2023.11.02 |
---|---|
[프로그래머스] 최대공약수와 최소공배수 (1) | 2023.11.02 |
[프로그래머스] 직사각형 별찍기 (1) | 2023.11.01 |
[프로그래머스] 하샤드수 (1) | 2023.10.31 |
[프로그래머스] 양꼬치 (0) | 2023.10.31 |