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

문제설명

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


제한사항

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


입출력 예

arr result
[[572, 22, 37], [287, 726, 384], [85, 137, 292], [487, 13, 876]] [[572, 22, 37, 0], [287, 726, 384, 0], [85, 137, 292, 0], [487, 13, 876, 0]]
[[57, 192, 534, 2], [9, 345, 192, 999]] [[57, 192, 534, 2], [9, 345, 192, 999], [0, 0, 0, 0], [0, 0, 0, 0]]
[[1, 2], [3, 4]] [[1, 2], [3, 4]]


풀이

arr 배열의 행의 수가 더 많다면 열의 수가 행의 수와 같아지도록 각 행의 끝에 0을 추가하고, 열의 수가 더 많다면 행의 수가 열의 수와 같아지도록 각 열의 끝에 0을 추가한 이차원 배열을 return하는 구현 문제입니다.

#include <string>
#include <vector>

using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr) {
    vector<vector<int>> answer = arr;
    int r = arr.size();
    int c = arr[0].size();
    
    if(r != c)
    {
        if(r > c)
        {
            for(int i = 0; i < r; i++)
            {
                for(int j = 0; j < r-c; j++)
                {
                    answer[i].push_back(0);
                }
            }
        }
        else
        {
            for(int i = 0; i < c-r; i++)
            {
                vector<int> temp;
                
                for(int j = 0; j < c; j++)
                {
                    temp.push_back(0);
                }
                
                answer.push_back(temp);
            }
        }
    }

    return answer;
}


결과

코드 실행결과

Categories:

Updated:

Leave a comment