학습(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);
    }