N

(프로그래머스 c++)행렬의 덧셈 본문

프로그래머스 알고리즘/1단계

(프로그래머스 c++)행렬의 덧셈

naeunchan 2020. 4. 29. 11:05
728x90
반응형

행렬의 덧셈을 구현하는 문제..!

arr1과 arr2의 size는 같으니까 아무거나 사용해도 상관없다..!

 

첫 번째 for문에서 int형 벡터 tmp와 int형 변수 sum을 선언해준다.

sum은 행렬의 덧셈을 저장해주는 변수이고, tmp는 각 행의 덧셈을 넣어주는 변수이다.

이중 for문을 사용하여

( [0, 0] + [0, 0] ) ( [0, 1] + [0, 1] )

( [1, 0] + [1, 0] ) ( [1, 1] + [1, 1] )

이렇게 계산을 한다.

 

문제의 첫 번째 예시를 통해 tmp에 대해 자세하게 설명하자면

i = 0, j = 0 일 때, sum = 4 -> tmp에 4 저장.

i = 0, j = 1 일 때, sum = 6 -> tmp에 6 저장.

이렇게 두번 돌게 되면 tmp에는 (4,6)이 저장되므로

이 벡터를 answer에 넣어주면 0번째 행의 각 열에 덧셈의 결과값을 저장할 수 있다.

 

이 문제는 2차원 벡터를 처음 써보거나 초보자(?)들에게는 약간의 어려움이 있을 수 있겠다고 생각이 들었다..!

하지만 풀다보면 이런 문제는 아아아아주주주주 쉽게 풀 수 있을 것이다..!

#include <string>
#include <vector>

using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
    vector<vector<int>> answer;
    
    for(int i = 0; i < arr1.size(); i++)
    {
        vector<int> tmp;
        int sum = 0;
        
        for(int j = 0; j < arr1[i].size(); j++)
        {
            sum = arr1[i][j] + arr2[i][j];
            tmp.push_back(sum);
        }
        answer.push_back(tmp);
    }
    return answer;
}
728x90
반응형