Post

[Programmers] #181830 - 정사각형으로 만들기 [Java][C++][Python]

[Programmers] #181830 - 정사각형으로 만들기 [Java][C++][Python]

문제 링크


1. 아이디어

이차원 배열 arr에 대해 arr을 포함하는 정사각형 이차원 배열을 만들면 되는 문제다. arr의 행 길이와 열 길이 중 더 큰 값으로 정사각형 이차원 배열을 만들고 arr의 값들을 옮기는 방식으로 해결했다.


2. 복잡도

접근시간공간
풀이$O(N^2)$$O(N^2)$

($N$ = arr의 행 수와 열 수 중 큰 값)


3. 코드

풀이 [Java][C++][Python]

1
2
3
4
5
6
7
8
9
10
11
class Solution {
    public int[][] solution(int[][] arr) {
        int len = Math.max(arr.length, arr[0].length);
        int[][] res = new int[len][len];
        for (int i = 0; i < arr.length; i++) {
            System.arraycopy(arr[i], 0, res[i], 0, arr[i].length);
        }

        return res;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
#include <bits/stdc++.h>
using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr) {
    int len = max(arr.size(), arr[0].size());
    vector<vector<int>> res(len, vector<int>(len));
    for (int i = 0; i < arr.size(); i++) {
        copy(arr[i].begin(), arr[i].end(), res[i].begin());
    }

    return res;
}
1
2
3
4
5
6
7
def solution(arr):
    n = max(len(arr), len(arr[0]))
    res = [[0] * n for _ in range(n)]
    for i, row in enumerate(arr):
        res[i][: len(row)] = row

    return res

This post is licensed under CC BY 4.0 by the author.