문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/181830

제한 사항

입출력 예

풀이
import java.util.Arrays;
import java.util.stream.IntStream;
class Solution {
public int[][] solution(int[][] arr) {
return IntStream.range(0, Math.max(arr.length, arr[0].length))
.mapToObj(i -> {
if (arr[0].length < arr.length) {
return Arrays.copyOf(arr[i], arr.length);
} else if (arr[0].length > arr.length) {
if (i < arr.length) {
return Arrays.copyOf(arr[i], arr[0].length);
} else {
return new int[arr[0].length];
}
} else return arr[i];
})
.toArray(int[][]::new);
}
}
import java.util.Arrays;
class Solution {
public int[][] solution(int[][] arr) {
int max = Math.max(arr.length, arr[0].length);
int[][] answer = new int[max][max];
for (int i = 0; i < arr.length; i++) {
answer[i] = Arrays.copyOf(arr[i], max);
}
return answer;
}
}
후기
스트림으로 푸니까 뭔가 많이 비효율적인 것 같지만... 그래도 그냥 풀면 재미없으니까...
배열을 복사하는 방법은 몇 가지가 있다. Arrays.copyOf(), System.arrayCopy(), 직접 반복문으로 복사하기 등이 있는데 나는 Arrays.copyOf()가 복사할 배열의 길이를 넘기면 자동으로 0으로 초기화되는 것을 처음 알았다;; 간단하게 풀려면 처음에 가로, 세로 중 큰 값으로 답 배열을 만들어 놓고 그냥 단순히 원래의 배열만 붙여넣어도 된다.
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
| [프로그래머스][Java][Lv. 0] 수열과 구간 쿼리 2 (0) | 2024.03.03 |
|---|---|
| [프로그래머스][Java][Lv. 0] 무작위로 K개의 수 뽑기 (0) | 2024.02.22 |
| [프로그래머스][Java][Lv. 0] 그림 확대 (0) | 2024.02.15 |
| [프로그래머스][Java][Lv. 0] 외계인 사전 (0) | 2024.02.15 |
| [프로그래머스][Java][Lv. 0] 직사각형 넓이 구하기 (0) | 2024.02.14 |