Programmers 프로그래머스 코딩테스트 연습 - 행렬의 덧셈 (JavaScript)
Programmers(프로그래머스)의 코딩테스트 연습문제 Level 1 중,
행렬의 덧셈 문제를 JavaScript로 해결해 보도록 하겠습니다.
문제 설명
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 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]] |
작성한 답
solution.js
function solution(arr1, arr2) {
return arr1.map((a, i) => a.map((b, j) => b + arr2[i][j]));
}
설명
행과 열의 크기가 같은 2개의 행렬 arr1과 arr2를 입력받아 같은 행, 같은 열의 값을 서로 더한 행렬 덧셈의 결과를 반환하는 함수, solution을 완성하는 문제입니다.
for문으로 반복하여 해결할 수도 있는 문제지만 좀 더 멋지게 map() 함수를 사용하여 더 깔끔하고, 한눈에 알아보기도 쉽게 작성하실 수 있습니다.
map() 함수를 설명하자면 map() 함수 안의 callback 함수에서의 인수는 순서대로 현재값, 인덱스, map()함수를 사용한 배열의 값 입니다.
map(callback(현재값, 인덱스, 함수 사용 배열의 값)) 인거죠.
입출력 예의 첫번째 예시를 예로 들고, 위에 작성한 답의 코드를 한줄씩 풀어내어 map() 함수를 사용할때 callback으로 나오는 인수값들을 console.log()로 출력한 예시를 보여드리면 이해가 좀 더 잘 되실까 하여 아래에 적어봤습니다.
도움이 되셨으면 좋겠습니다.
var arr1 = [[1,2],[2,3]];
var arr2 = [[3,4],[5,6]];
solution(arr1, arr2);
function solution(arr1, arr2) {
var answer = arr1.map((a, i) => {
console.log("a => ", a, "/ i => ", i);
return a.map((b, j) => {
console.log("b => ", b, "/ j => ", j);
return b + arr2[i][j];
});
});
console.log("answer => ", answer);
return answer;
}
// 출력 코드
// a => [ 1, 2 ] / i => 0
// b => 1 / j => 0
// b => 2 / j => 1
// a => [ 2, 3 ] / i => 1
// b => 2 / j => 0
// b => 3 / j => 1
// answer => [ [ 4, 6 ], [ 7, 9 ] ]
도움이 되셨다면 공감, 댓글 부탁드립니다!
궁금하신 점이나 요청 사항은 언제든지 말씀 해주세요!
감사합니다.
'Developer > Algorithm' 카테고리의 다른 글
Programmers 프로그래머스 코딩테스트 연습 - x만큼 간격이 있는 n개의 숫자 (JavaScript) (0) | 2020.08.28 |
---|---|
Programmers 프로그래머스 코딩테스트 연습 - 평균 구하기 (JavaScript) (0) | 2020.08.27 |
Programmers 프로그래머스 코딩테스트 연습 - 직사각형 별찍기(JavaScript) (0) | 2020.08.25 |
Programmers 프로그래머스 코딩테스트 연습 - 자릿수 더하기 (JavaScript) (0) | 2020.08.22 |
Programmers 프로그래머스 코딩테스트 연습 - 정수 제곱근 판별 (JavaScript) (0) | 2020.08.21 |
댓글