문제 링크
난이도 : Lv. 0

문제 내용

문제 설명

이차원 정수 배열 arr이 매개변수로 주어집니다. arr의 행의 수가 더 많다면 열의 수가 행의 수와 같아지도록 각 행의 끝에 0을 추가하고, 열의 수가 더 많다면 행의 수가 열의 수와 같아지도록 각 열의 끝에 0을 추가한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.


제한사항
  • 1 ≤ arr의 길이 ≤ 100
  • 1 ≤ arr의 원소의 길이 ≤ 100
    • arr의 모든 원소의 길이는 같습니다.
  • 1 ≤ arr의 원소의 원소 ≤ 1,000

문제 분석

더 짧은 쪽에 0을 추가해서 정사각형으로 만드는 것이 목적

작성한 코드

#include <string>
#include <vector>
 
using namespace std;
 
vector<vector<int>> solution(vector<vector<int>> arr) {
    int rowSize = arr.size();
    int colSize = arr[0].size();
    int diff;
    if(rowSize == colSize){
        return arr;
    }
    else if (rowSize > colSize) {
        diff = rowSize - colSize;
        for(int i = 0; i < diff; i++) {
            for(auto &i : arr) i.push_back(0);    
        }
        
    }
    else {
        diff = colSize - rowSize;
        for(int i = 0; i < diff; i++) 
            arr.push_back(vector<int>(colSize, 0));
    }
    
    return arr;
    
}

차이대로 0을 행or열쪽 추가

우수 코드 분석

#include <cmath>
#include <vector>
using namespace std;
 
vector<vector<int>> solution(vector<vector<int>> arr)
{
    vector<vector<int>> answer;
 
    int size=max(arr.size(), arr[0].size());
    vector<vector<int>> temp(size, vector<int>(size, 0));
    for(int i=0; i<arr.size(); i++)
        for(int j=0; j<arr[i].size(); j++)
            temp[i][j]=arr[i][j];
    answer=temp;
 
    return answer;
}

애초에 그냥 0으로 채워진 정사각형을 만들어놓고 거따가 넣는걸로 했네.. 굿인듯