본문 바로가기
Developer/Algorithm

Programmers 프로그래머스 코딩테스트 연습 - 행렬의 덧셈 (JavaScript)

by roqkfrlfhr 2020. 8. 26.

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 ] ]

 

 

 

도움이 되셨다면 공감, 댓글 부탁드립니다!

궁금하신 점이나 요청 사항은 언제든지 말씀 해주세요!

 

감사합니다.


댓글