학습(0)/C++ 문제풀이
프로.입문.2차원 만들기, 2차원 배열 선언
누가 뭐래도 개발자
2025. 2. 19. 11:33
- 2차원 배열의 선언과 초기화
배열 속의 배열.
(y, 0) -> 0으로 초기화
int x = num_list.size() / n; //4
int y = n; //2
vector<vector<int>> answer(x, vector<int>(y, 0)); //[x][y]값을 미리 할당해줄 수 없을까?
#include <string>
#include <vector>
using namespace std;
vector<vector<int>> solution(vector<int> num_list, int n) {
int x = num_list.size() / n;
int y = n;
int k = 0; //num_list idx
vector<vector<int>> answer(x, vector<int>(y, 0));
for (int i = 0; i < x; ++i)
{
for (int j = 0; j < y; ++j)
{
answer[i][j] = num_list[k++];
}
}
return answer;
}
- 개선
만약 num_list의 크기가 n으로 나누어 떨어지지 않을 때 마지막 행을 부분적으로 채우고 싶다면, x를 계산할 때 올림 연산을 사용해야 합니다. (num_list.size() + n - 1) / n은 나눗셈의 올림 연산과 동일한 효과를 냅니다.
k제거: num_list[i * y + j] i* 행길이 + j
- 다른 사람
배열을 만들어 2차원배열에 행 push_back
for(int i=0; i<num_list.size(); i+=n)
{
vector<int> temp;
for(int j=0; j<n; j++)
{
temp.push_back(num_list[i+j]);
}
answer.push_back(temp);
}