[매일코딩-프로그래머스] 행렬의 덧셈 01

2022. 1. 14. 10:48WEB Dev/CordingTEST

728x90

 

이번주의 마지막 문제!

 


 

[문제] 행렬의 덧셈 

 

 

행과 열의 크기가 같은 두 행이 각각 arr1 , arr2 에 주어지고 같은 행, 열에 있는 값을 더해주어 반환한다.

 

 

[풀이]

 

 

행렬은 배열인데, 배열 안에 배열이 있는 이중 배열로 들어있게 된다. 

각 값의 인덱스(위치)가 모두 같으므로 같은 인덱스 값을 더하는 반복문으로 만들어야겠다.

그리고 조건이 있으므로 조건문을 우선 만들어준다. 행과 열의 길이가 500을 넘지 않는다.

 

 

 

제한조건에 따른 조건문 만들기

 

 

 

function solution(arr1, arr2) {    
    var answer = [[]];
    
    if(arr1.length <= 500 || arr2.length <= 500){
        answer = true
    }
    
    return answer;
}

 

 

위와 같은 조건을 주면 true가 출력된다.

 

 

 

반복문 만들기

 

 

덧셈을 하는 방법은 인덱스를 이용해야 할 것 같은데 

 

arr1[0][0] + arr2[0][0]

arr1[0][1] + arr2[0][1]

arr1[1][0] + arr2[1][0]

arr1[1][1] + arr2[1][1]

.

.

.

 

위와 같이 더해지는 식을 만들어야 한다.

마치 구구단처럼 순차적으로 더해져야 하니 중첩 반복문을 사용해야 한다.

 

function solution(arr1, arr2) {    
    
    var answer = [[]];
    
    if(arr1.length <= 500 || arr2.length <= 500){
        
        for(var i=0; i<arr1.length; i++){
            for(var k=0; k<arr1.length; k++){
                answer.push(arr1[i][k]+arr2[i][k])
            }
        }
    }
    
    return answer;
}

 

 

위와 같이 만들었더니 ...

 

틀렸다!

 

 

 

 

그냥 push를 해버렸더니 내부에 미리 주어진 중첩 배열이 그냥 빈 배열로 밀려버렸고

테스트1에서는 잘 더해졌는데 이중이 아닌 테스트 2에서는 빈 값이 더해지고 있었다.

 

여기서 조건문 처리를 해야하는걸까?

아니면 더 좋게 더하는 방법이 있을까?

 

 

 


728x90