서두르지 말고 쉬지 말자

백준 2738번 행렬 덧셈(C++) 본문

코딩 공부/Baekjoon Problem Solving

백준 2738번 행렬 덧셈(C++)

philos 2024. 5. 25. 14:16

문제 해결 전략 : std::vector 라이브러리를 사용해서 행렬을 입력할 공간을 만든

문제 해결 소감 : 처음에 cin >> v[l] 이 아니라 cin >> v[i]라고 해버려서 계속 이상한 값이 나오길래 뭐지? 싶었다. 코드 블럭 하나 짤 때마다 주의를 기하자. 

문제를 해결하면서 알게 된 것 : 2차원 벡터 요소에 접근할 때 2차원 배열차럼 접근이 가능하다는 것

 

#include <iostream>
#include <vector>
using namespace std;

int N;
int M; // N*M크기 행렬
vector<vector<int>> Matrix1;
vector<vector<int>> Matrix2; // vector인데 각 컨테이너가 vector임
vector<vector<int>> ResultMat;

int main() {
  cin >> N >> M;
  vector<int> v(M);
  for (int i = 0; i < N; i++) {
    for (int l = 0; l < M; l++) {
      cin >> v[l];
    }
    Matrix1.push_back(v);//행렬 하나 만들기
  }
  for (int i = 0; i < N; i++) {
    for (int l = 0; l < M; l++) {
      cin >> v[l];
    }
    Matrix2.push_back(v); // 행렬 하나 더 만들기
  }

  for(int i = 0; i < N; i++){
    for(int l = 0; l < M; l++){
      v[l] = Matrix1[i][l] + Matrix2[i][l];
    }
    ResultMat.push_back(v);
  }
  
  for(int i = 0;i < N;i++){
    for(int l = 0;l<M;l++){
      cout << ResultMat[i][l] << " ";
    }
    cout << '\n';
  }
  
  return 0;
}
반응형