
내가 작성한 코드
class Solution {
public int[][] solution(int[][] arr) {
if (arr.length > arr[0].length) {
int[][] answer = new int[arr.length][arr.length];
for (int i = 0; i < arr.length; i++) {
System.arraycopy(arr[i], 0, answer[i], 0, arr[i].length);
}
return answer;
}
if(arr.length < arr[0].length) {
int[][] answer = new int[arr[0].length][arr[0].length];
for (int i = 0; i < arr.length; i++) {
System.arraycopy(arr[i], 0, answer[i], 0, arr[i].length);
}
return answer;
}
return arr;
}
}
System.arraycopy(arr[i], 0, answer[i], 0, arr[i].length);
arr[i]
: 복사할 원본 배열의 참조.i
번째 내부 배열을 복사0
: 원본 배열에서 복사를 시작할 인덱스answer[i]
: 복사 대상 배열의 참조.i
번째 내부 배열에 붙여넣기0
: 대상 배열에서 복사를 시작할 인덱스arr[i].length
: 복사할 요소의 개수
다른 사람의 코드
class Solution {
public int[][] solution(int[][] arr) {
int max = Math.max(arr.length, arr[0].length);
int[][] array = new int[max][max];
for (int i = 0; i < arr.length; i++) {
System.arraycopy(arr[i], 0, array[i], 0, arr[0].length);
}
return array;
}
}
- 1차원 배열과 2차원 배열의 길이를 비교애 더 큰것을 새로운 배열의 길이로 사용후 복제
Share article