코드 중 //이 부분 에서 IndexOutOfBound 오류가 발생했다.
아래와 같이 rowSize, colSize로 대입해서 코드를 작성해야 실행 오류가 발생하지 않는다. 왜그런걸까?
class Solution {
public int[][] solution(int[][] arr) {
int[][] answer = {};
int rowSize = arr.length, colSize = arr[0].length;
if(rowSize == colSize);
else if(rowSize > colSize){
//가로로 늘린다.
//arr.length = 세로길이
//arr[0].length = 가로길이
//세로 길이가 더 길고, 가로길이를 세로 길이에 맞춰서 늘려야
for(int i = 0; i < rowSize; i++){
int []tmp = new int[rowSize];
for(int j = 0; j < rowSize; j++){
if(j < colSize){ //이 부분
tmp[j] = arr[i][j];
} else {
tmp[j] = 0;
}
}
arr[i] = tmp;
}
} else {
//세로로 늘린다.
int [][]tmp = new int[arr[0].length][arr[0].length];
for(int i = 0; i < arr[0].length; i++){
if(i < arr.length){
tmp[i] = arr[i].clone();
} else {
tmp[i] = new int[tmp.length];
}
}
arr = tmp;
}
return arr;
}
}
다른 분 풀이
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;
}
}
'코딩테스트 > Programmers' 카테고리의 다른 글
[프로그래머스] 두 수의 합 (0) | 2025.01.23 |
---|---|
[프로그래머스] 무작위로 K개의 수 뽑기 (0) | 2025.01.23 |
[프로그래머스] 전국 대회 선발 고사 (0) | 2025.01.23 |
[프로그래머스] 홀짝에 따라 다른 값 반환하기 (0) | 2025.01.22 |
[프로그래머스] 배열 만들기 2 (0) | 2025.01.22 |