728x90
문제
나의코드
function solution(arr1, arr2) {
var answer = [[]];
for(let i = 0; i < arr1.length; i++)
{
answer[i] = [];
for(let j = 0; j < arr1[i].length; j++)
{
answer[i].push(arr1[i][j] + arr2[i][j]);
}
}
return answer;
}
설명
입출력 예를 보면 알수 있듯이, 하나의 행렬 예를들어 arr1의 경우 arr1[0]만 입력받을 경우라면 [1,2]라는 값이 입력받아진다. 하지만 [1,2] 와 [3,4]를 동시에 더하기를 할 방법은 없기 때문에, arr[0][0]과 같은 방법으로 해당하는 행렬안에 값을 한번더 찾는 방법을 사용하여야한다. 나는 이 접근 방법을 이중for문을 통해서 해결하였다! arr1과 arr2의 길이는 같기 때문에 arr1의 길이를 기준으로 처음 for문을 통해 [1,2] , [2,3] 과 같은 값을 받을 수 있게 하였고 한번더 for문을 들어가서 해당하는 arr1[i].length만큼 for문을 돌려준다(안의 갯수를 생각하여야하기 때문에). 그리고 해당하는 arr1의[i][j] 값과 arr2의 값을 더해서 answer[i]에 push하는 방법을 사용하였다. answer[i]를 초기화해주어야 answer[i]에 값이 들어갈 수 있다!
다른사람의 풀이
function sumMatrix(A,B){
return A.map((arr1, idx1) => arr1.map((val, idx2) => val+B[idx1][idx2]));
}
-map을 2번 이용하여서 쉽게 코드를 표현하였다. arr1의 map의 접근하여서 for문을 한번 돌린 것과 같은 효과를 내게 하고, 그 태의 map을 한번 더 사용하여서 해당하는 B의 값과 덧셈을 해주는 방식으로 한 것같다.
이렇게 보기만 하여도 어렵지만 map에 대한 코드는 꼭 다시한번 보고 이해를 하여서 더 간결한 코드를 짤 수 있도록 구상해봐야겠다!
'코딩 > 코딩테스트' 카테고리의 다른 글
[프로그래머스/JS] 최대공약수와 최소공배수 (0) | 2024.05.23 |
---|---|
[프로그래머스/JS]직사각형 별찍기 (0) | 2024.05.22 |
[프로그래머스/JS] 약수의 개수와 덧셈 (0) | 2024.05.17 |
[프로그래머스/JS] 나누어 떨어지는 숫자 배열 (0) | 2024.05.09 |
프로그래머스) 콜라츠 추측 -JS (0) | 2024.05.07 |