[프로그래머스 / C++] 정사각형으로 만들기

YH·2023년 12월 6일
0

문제

정사각형으로 만들기 : 문제 링크


문제 분석

  • 이차원 정수 배열 arr이 매개변수로 주어진다. arr의 행의 수가 더 많다면 열의 수가 행의 수와 같아지도록 각 행의 끝에 0을 추가하고, 열의 수가 더 많다면 행의 수가 열의 수와 같아지도록 각 열의 끝에 0을 추가한 이차원 배열을 return
  • arr 크기를 할당하기 위해 resize() 함수를 사용하므로 algorithm 헤더를 include
  • if ~ else if문을 통해 arr의 행과 열의 개수를 비교하고, 행의 수가 더 많다면 for loop를 통해 arr의 첫번째부터 마지막 열까지 순환하고, resize() 함수를 사용하여 행의 수만큼 크기를 할당하고, 빈공간은 0으로 추가. 열의 수가 더 많다면 resize() 함수를 사용하여 행의 크기를 열의 수만큼 크기를 할당하고, 빈배열은 0으로 추가. 최종적으로 저장된 arr을 return

algorithm 헤더의 resize() 함수 사용법
void resize (size_type n, value_type val);
n => 할당할 벡터의 사이즈
val => 할당할 벡터 사이즈가 기존보다 크다면 빈 공간을 채울 값


풀이

#include <vector>

using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr) {
    if(arr.size() > arr[0].size()) {
        for(int i = 0; i < arr.size(); ++i) {
            arr[i].resize(arr.size(), 0);
        }
    }
    else if(arr.size() < arr[0].size()) {
        arr.resize(arr[0].size(), vector<int>(arr[0].size(), 0));
    }
    return arr;
}
profile
Keep Recycling Your Dreams

0개의 댓글