Algorithm - 행렬의 덧셈

SeowooCHo2·2022년 5월 13일
0

알고리즘

목록 보기
9/28
post-thumbnail

행렬의 덧셈

<프로그래머스 문제를 기반으로 합니다>

  • 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다.
  • 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]]

입출력 예를 보면 흔히 아는 바로 그 행렬의 덧셈이다
자료 구조가 배열 안에 배열이 포함된 형태로 큰 배열 안에서 작은 배열을 추출해내고, 작은 배열으 원소들을 추출해내서 더해주면 될 것 같다 ( ̄︶ ̄)↗ 

그럼 풀이 방법은 어떻게 짤까?

  1. 먼저 큰 배열에서 작은 배열들을 반복문을 통해 추출해낸다.
  2. 작은 배열을 담을 그릇을 준비해준 후 연속 반복문을 통해 작은 배열의 원소들을 추출해낸다.
  3. 작은 배열의 원소들을 두 반복문의 변수들을 통해 추출해내어 더해준다.
  4. 결과값을 배열에 추가해준다.

아 그럼 마지막에 배열에 추가해주려면 push() 함수를 사용하면 되겠구나!!👍

<풀이 완성 코드>

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

(추가 설명)

answer = [answer[0], answer[1], ........ ] 

으로 표현이 되는 것이다.

사실 이 문제는 간단히 풀지 못했다. 생각을 많이 한 문제였던 것 같다 😉

profile
먹고 배우는 것엔 아끼지 말자구 ( ̄︶ ̄)↗ 

0개의 댓글