📝24.01.19
🔗 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12950?language=csharp
문제 설명
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
도저히 답을 모르겠어서 다른 사람의 풀이를 참고하였다.
물론 이중 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차원 배열에서는 모두 통용되는 것이라고 한다. 이를 잘 외워둬야겠다.
#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++은 아주 빠르게 풀이했다. 다른 사람의 풀이도 다 나와 유사했다.