[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.