D.evelop [CS]/Algorithm

[Algorithm 021] JS - 행렬의 덧셈 (Level 01)

Danne 2021. 11. 8. 14:10

문제 출처 : 프로그래머스 prorammers  - 행렬의 덧셈 (링크)

 

문제 설명

함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다.

다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

 

제한사항

  • x는 -10000000 이상, 10000000 이하인 정수입니다.
  • n은 1000 이하인 자연수입니다.

 


 

A.  내가 푼 답

function solution(arr1, arr2) {
  var answer = [];

  for (let i = 0; i < arr1.length; i++) {
    for (let j = 0; j < arr1[0].length; j++) {
      answer.push(arr1[i][j] + arr2[i][j]);
    }
  }
  return new Array(arr1.length)
    .fill()
    .map((e) => answer.splice(0, arr1[0].length));
}

 

  for (let i = 0; i < arr1.length; i++) {
    for (let j = 0; j < arr1[0].length; j++) {
      answer.push(arr1[i][j] + arr2[i][j]);
    }
  }
  
...

solution([[1,2],[2,3]]	, [[3,4],[5,6]])  // [ 4, 6, 7, 9 ]
solution([[1], [2]], [[3], [4]])          // [ 4, 6 ]

먼저 원하는 값을 더한 배열을 만들고, 주어졌던 배열과 동일한 갯수로 나누기로 했다.

 

[ 4, 6, 7, 9 ]배열 answer을 [ [ 4, 6 ], [ 7, 9 ] ]형식으로 나누기 위해 fill과 map 메서드 사용. 

new Array(arr1.length)
    .fill()         // [ undefined, undefined ]
    .map((e) => answer.splice(0, arr1[0].length));

answer배열을 index가 0인것 부터, 2개씩(arr1배열 1개 길이 = 2) 잘라 값으로 넣는다. 

[[4, 6], undefined]
[[4, 6], [7, 9]]

 

 

B. 다른 사람이 푼 답

function solution(arr1, arr2) {
  return arr1.map((a, i) => a.map((b, j) => b + arr2[i][j]));
}

arr1.map((a, i) => a .........

나는 [[1, 2], [2, 3]] 이렇게 들릴 꺼야.

 

arr1.map((a, i) => a.map((b, j) => b............

나는 [[1, 2], 이렇게, [2, 3]]이렇게 돌꺼야.

그리고 arr2 배열에서 너네랑 같은 자리에 있는 애들(arr2[i][j])을 더 할 거야.

 

 

 

 

반응형