공부/코딩테스트

Q. 행렬의 덧셈

뀨뿌뀨뿌 2023. 6. 16. 18:02

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 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) {
  let result = [];
  for (let i = 0; i < arr1.length; i++) {
    let new_arr = [];
    for (let j = 0; j < arr1[0].length; j++) {
      new_arr.push(arr1[i][j] + arr2[i][j]);
    }
    result.push(new_arr);
  }
  return result;
}

// map 으로 해보기  -> 처음에 null 값을 주었던 이유가 return을 빼고 입력....
function solution(arr1, arr2) {
  return arr1.map((item1, i) =>
    item1.map((item2, j) => {
      return item2 + arr2[i][j];
    })
  );
}

 

😊 문제풀이 답안 OR 다른사람들 답안

// forEach
function solution(arr1, arr2) {
    const answer = [];
    arr1.forEach((arr, i) => answer.push(arr.map((v, j) => v + arr2[i][j])));
    return answer;
}

// map
function sumMatrix(A,B){
  return A.map((a,i) => a.map((b,j) => A[i][j] + B[i][j]))
}

// for-in
function solution(arr1, arr2) {
    let answer = [];
    for (i in arr1){
        let tempArr = [];
        for(j in arr1[i]){
            let tempNum = arr1[i][j] + arr2[i][j];
            tempArr.push(tempNum);
        }
        answer.push(tempArr);
    }
    return answer;
}
  • for - in 문
    • 주로 객체의 반복에 사용됨
    • 객체의 열거가능한(enumberable === true)속성에 대해 반복함
    • 순서를 보장할 수 없기 때문에, Array의 반복에는 사용하지 말라고 안내하고 있음
    • for(variable in object) {...}
      variable - 해당 객체의 열거 가능한 속성 이름
      object - 반복문을 수행할 객체

'공부 > 코딩테스트' 카테고리의 다른 글

Q. 부족한 금액 계산하기  (0) 2023.06.17
Q. X만큼 간격이 있는 n개의 숫자  (0) 2023.06.17
Q. 핸드폰 번호 가리기  (0) 2023.06.16
Q. 평균 구하기  (0) 2023.06.16
Q. 음양 더하기  (0) 2023.06.16