정답 확인
#include <string>
#include <vector>
using namespace std;
vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
vector<vector<int>> answer;
vector<int> Q;
for (int i = 0; i < arr1.size(); i++) {
// 한 행 단위로 j는 한 열씩 이동하며 반복 계산 -> 계산된 한 행이 Q에 추가
for (int j = 0; j < arr1[i].size(); j++) {
Q.push_back(arr1[i][j] + arr2[i][j]);
}
// Q에 들어간 계산된 한 행이 answer에 원소로 채워짐
answer.push_back(Q);
// 위에서 이미 계산한 행을 지우고 다음 행에 대한 계산을 하기 위해 계산된 Q 벡터를 비움
Q.clear();
}
return answer;
}
int main()
{
// 중괄호 내의 중괄호로 넣기
vector<vector<int>> a{{1,2},{2,3}}, b{{3,4},{5,6}};
vector<vector<int>> answer = solution(a, b);
for (int i = 0; i < answer.size(); i++)
{
for (int j = 0; j < answer[0].size(); j++)
{
cout << answer[i][j] << " ";
}
cout << "\n";
}
}
2차원 벡터의 선언 : vector<vector<자료형>> 변수명;
vector<vector<int>> answer; // 작은 벡터 Q들을 품고 있는 큰 벡터 answer vector<int> Q; // 작은 벡터 Q Q.push_back(1); Q.push_back(2); answer.push_back(Q); cout << answer.at(0).at(0); // 1 출력 cout << answer[0][1]; // 2 출력
vector<vector> answer; : 벡터를 선언할 때 자료형을 벡터로 선언하면 벡터 자료형을 담을 수 있는 벡터 자료형으로 사용할 수 있음
vector Q; answer.push_back(Q); : 벡터에 자료를 넣을 때는 1차원 벡터를 선언해서 값을 저장한 뒤 2차원 벡터에 삽입할 수 있다.
cout << answer.at(0).at(0); : 2차원 배열의 첫번째 원소에 접근한다. 값을 push_back한 이후에 접근할 수 있다.
cout << answer[0][0]; : 배열과 같이 인덱스로 접근할 수 있다.
벡터의 행과 열의 크기를 아는 경우 다음과 같이 벡터의 크기를 초기화 할 수 있다.
vector<vector> v(n,vector(m)); : NM만큼 2차원 벡터 공간만 확보
vector<vector> v(n,vector(m,0)); : NM만큼 2차원 벡터 0으로 값 초기화
예시 코드
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m, cnt = 1;
cin >> n >> m; // 사용자 입력
// n x m 의 2차원 벡터 행렬 생성
vector<vector<int>> v(n, vector<int>(m));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
v[i][j] = cnt++;
}
}
// 출력
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << v[i][j] << " ";
}
cout << '\n';
}
}
사용자 입력: 2 3 1 4
출력:
1 2 3 1 2 3 4
4 5 6