66. [Java] 정사각형으로 만들기
https://school.programmers.co.kr/learn/courses/30/lessons/181836
- 수와 같아지도록 각 행의 끝에 0을 추가하고,
- 열의 수가 더 많다면 행의 수가 열의 수와 같아지도록 각 열의 끝에 0을 추가한 이차원 배열을 return
- 1 ≤ arr의 길이 ≤ 100
- 1 ≤ arr의 원소의 길이 ≤ 100
- arr의 모든 원소의 길이는 같다.
- 1 ≤ arr의 원소의 원소 ≤ 1,000
정답코드
자바에서 new int[n][m]
으로 배열 만들면 모든 값은 자동으로 0
으로 초기화된다. 그래서 굳이 0
을 넣는 반복문 돌릴 필요는 없다. 결국 Math.max 메서드로 arr.length(세로 길이)와 arr[0].length(가로 길이) 중 큰 걸로 2차원 배열을 선언하고 for문을 돌려 기존 배열 요소들을 옮겨 담아 주면 된다.
import java.util.*;
class Solution {
public int[][] solution(int[][] arr) {
int rows = arr.length;
int cols = arr[0].length;
int size = Math.max(rows, cols); // 정사각형 크기
int[][] answer = new int[size][size];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
answer[i][j] = arr[i][j];
}
}
// 어차피 나머지 공간은 0으로 자동으로 초기화 된다
return answer;
}
}
💡 설명
int size = Math.max(rows, cols);
→ 정사각형을 만들기 위해 더 큰 쪽에 맞춤춘다.result
는size x size
정사각형 배열이다.- 입력
arr
의 데이터를answer
에 그대로 복사. - 복사되지 않은 나머지 부분은 자동으로
0
으로 채워진다 (Java 기본값)
✅ 자바 배열의 기본 초기값
타입 | 기본값 |
---|---|
|
|
|
|
|
|
|
|
참조타입 ( |
|