🌼문제 설명
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
🌼제한 조건
- 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
🌼입출력 예
arr1 | arr2 | return |
[[1,2],[2,3]] | [[3,4],[5,6]] | [[4,6],[7,9]] |
[[1],[2]] | [[3],[4]] | [[4],[6]] |
🌼나의 풀이
function solution(arr1, arr2) {
var answer = [];
for (let i = 0; i < arr1.length; i++) {
let sum = [];
for (let j = 0; j < arr1[i].length; j++) {
sum.push(arr1[i][j] + arr2[i][j]);
}
answer.push(sum);
}
return answer;
}
2차원 배열을 이중 for문을 돌려 2개의 배열을 같은 인덱스에 있는 값끼리(각 0번째 인덱스 0 번째 요소, 0번째 인덱스 1번째 요소,... 등등의 방식) 덧셈
🌼다른 사람 풀이
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;
}
sum[]이라는 새로운 배열 만들지 않고 answer배열 하나만 이용해서 푼 풀이
function sumMatrix(A,B){
return A.map((arr1, idx1) => arr1.map((val, idx2) => val+B[idx1][idx2]));
}
map() 중첩해 풀기...! map활용을 해보자ㅜ
2중배열의 각 행을 arr1이라고 하고, 이 arr1의 각각의 요소들을 idx1이라고 한 후에 각각의 idx1에 B의 각 요소들을 더해줌.
🌼활용 메서드
- array.map(): 배열(array)내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 가진 새로운 배열을 만들어냄
let newArr=arr.map(function callback (현재값 [, index [, array]] ) {
// return newArr를 위한 요소
}[,thisArg)
- callback은 arr의 모든 요소를 호출하는 함수 =>그 결과가 newArr에 더해짐
- [로 감싼 것은 모두 부가적(생략 가능)
- 현재값으로는 array안에서 처리될 현재 요소를 넣어줌
- return의 값으로는 newArr에 funtion을 callback한 결과가 각각의 요소에 적용되어 담기게 될 값을 적용
'알고리즘' 카테고리의 다른 글
[프로그래머스 / 코딩테스트 연습] 문자열 다루기 기본-자바스크립트(javascript) (1) | 2023.04.10 |
---|---|
[프로그래머스 / 코딩테스트 연습] 2016년 (0) | 2023.04.10 |
[프로그래머스 / 코딩테스트 연습] 핸드폰 번호 가리기 (0) | 2023.04.07 |
[프로그래머스 / 코딩테스트 연습] 없는 숫자 더하기 (0) | 2023.04.07 |
[프로그래머스 / 코딩테스트 연습] 두 정수 사이의 합 (0) | 2023.04.07 |
댓글