[프로그래머스] 행렬의 덧셈

김유원·2024년 1월 19일
0

📝24.01.19

🔗 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12950?language=csharp

문제 설명

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

[C#] 내가&남이 작성한 풀이

도저히 답을 모르겠어서 다른 사람의 풀이를 참고하였다.
물론 이중 for문으로 answer[i,j] = arr1[i,j] + arr2[i.j]를 구성해야 한다는 점은 파악하였다. 하지만 arr의 길이를 구할 수가 없어 한참 고생하였다.

특히 나는 C++을 자주 사용했어서 당연히 arr1[0].Length;면 당연히 구해질 줄 알았는데 아니었다.

using System;
public class Solution {
    public int[,] solution(int[,] arr1, int[,] arr2) {
        int[,] answer = new int[arr1.GetLength(0),arr1.GetLength(1)];
        
        for(int i = 0; i < arr1.GetLength(0); i++) {
            for(int j = 0; j < arr1.GetLength(1); j++) {
                answer[i,j] = arr1[i,j] + arr2[i,j];
            }
        }
        return answer;
    }
}

풀이를 살펴보면 arr1.GetLength(0), arr1.GetLength(1)이 행과 열의 개수를 구하는 방법이라는 것을 알 수 있다. 2차원 배열에서는 모두 통용되는 것이라고 한다. 이를 잘 외워둬야겠다.

[C++] 내가 작성한 풀이

#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> v;
        for(int j = 0; j < arr1[0].size(); j++) {
            v.push_back(arr1[i][j] + arr2[i][j]);
        }
        answer.push_back(v);
    }
    return answer;
}

C#과 달리 C++은 아주 빠르게 풀이했다. 다른 사람의 풀이도 다 나와 유사했다.

profile
개발 공부 블로그

0개의 댓글

관련 채용 정보