자료구조 및 알고리즘/JavaScript Practice

JS Practice) 프로그래머스 Lv.1 : 행렬의 덧셈

Ryomi 2023. 6. 21. 08:49
728x90
반응형

 

행렬의 덧셈

문제설명 :

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.

 

제한 사항

  • 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.

 

입출력 예

arr1 arr2
result
[[1, 2], [2, 3]] [[3, 4], [5, 6]] [[4, 6], [7, 9]]
[[1], [2]] [[3], [4]] [[4], [6]]

 

첫번째 접근

: 두 개의 for문을 사용해 문제를 해결했다. 먼저 arr1의 각 요소의 index(i)와 요소 내 요소의 index(j)를 구한 후 동인 인덱스(i, j)의 요소를 더해 배열(arr)에 담아준 후 다시 answer 배열에 push했다.

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

 

 

두 번째 접근

: index가 필요한 거라면 forEach를 사용해서 문제를 해결 할 수 있을 듯 하다. 

function solution(arr1, arr2) {
    let answer = []
    arr1.forEach((el, i) => {
        let arr = []
        el.forEach((_,j) => {
            arr.push(arr1[i][j] + arr2[i][j])
        })
        answer.push(arr)
    })
    return answer
}

 

 

solution

function solution(arr1, arr2) {
    return arr1.map((el, i) => el.map((item, j) => item + arr2[i][j]))
}

// map이 새로운 배열을 봔한하는 성질을 이용했다. 

// arr1을 map으로 돌린 후 arr1의 각 요소를 map을 돌리며 arr2의 해당 index 요소와 더해준다. 

오.. 멋있다.

728x90
반응형