문제 링크
난이도 : Lv. 0
문제 내용
문제 설명
이차원 정수 배열 arr
이 매개변수로 주어집니다. arr
의 행의 수가 더 많다면 열의 수가 행의 수와 같아지도록 각 행의 끝에 0을 추가하고, 열의 수가 더 많다면 행의 수가 열의 수와 같아지도록 각 열의 끝에 0을 추가한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤
arr
의 길이 ≤ 100 - 1 ≤
arr
의 원소의 길이 ≤ 100arr
의 모든 원소의 길이는 같습니다.
- 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으로 채워진 정사각형을 만들어놓고 거따가 넣는걸로 했네.. 굿인듯