알고리즘/프로그래머스 JAVA LV.0
정사각형으로 만들기
aihtnyc_h
2023. 5. 10. 08:14
728x90
반응형
SMALL
문제 설명
이차원 정수 배열 arr이 매개변수로 주어집니다. arr의 행의 수가 더 많다면 열의 수가 행의 수와 같아지도록 각 행의 끝에 0을 추가하고, 열의 수가 더 많다면 행의 수가 열의 수와 같아지도록 각 열의 끝에 0을 추가한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ arr의 길이 ≤ 100
- 1 ≤ arr의 원소의 길이 ≤ 100
- arr의 모든 원소의 길이는 같습니다.
- 1 ≤ arr의 원소의 원소 ≤ 1,000
입출력 예
arr result
[[572, 22, 37], [287, 726, 384], [85, 137, 292], [487, 13, 876]] | [[572, 22, 37, 0], [287, 726, 384, 0], [85, 137, 292, 0], [487, 13, 876, 0]] |
[[57, 192, 534, 2], [9, 345, 192, 999]] | [[57, 192, 534, 2], [9, 345, 192, 999], [0, 0, 0, 0], [0, 0, 0, 0]] |
[[1, 2], [3, 4]] | [[1, 2], [3, 4]] |
입출력 예 설명
입출력 예 #1
- 예제 1번의 arr은 행의 수가 4, 열의 수가 3입니다. 행의 수가 더 많으므로 열의 수를 4로 만들기 위해 arr의 각 행의 끝에 0을 추가한 이차원 배열 [[572, 22, 37, 0], [287, 726, 384, 0], [85, 137, 292, 0], [487, 13, 876, 0]]를 return 합니다.
입출력 예 #2
- 예제 2번의 arr은 행의 수가 2, 열의 수가 4입니다. 열의 수가 더 많으므로 행의 수를 4로 만들기 위해 arr의 각 열의 끝에 0을 추가한 이차원 배열 [[57, 192, 534, 2], [9, 345, 192, 999], [0, 0, 0, 0], [0, 0, 0, 0]]을 return 합니다.
입출력 예 #3
- 예제 3번의 arr은 행의 수와 열의 수가 2로 같습니다. 따라서 0을 추가하지 않고 [[1, 2], [3, 4]]을 return 합니다.
package Lv0;
import java.util.Arrays;
/*
이차원 정수 배열 arr이 매개변수로 주어집니다. arr의 행의 수가 더 많다면 열의 수가 행의 수와 같아지도록 각 행의 끝에 0을 추가하고,
열의 수가 더 많다면 행의 수가 열의 수와 같아지도록 각 열의 끝에 0을 추가한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
*/
public class H181830 {
public int[][] solution(int[][] arr) {
int rows = arr.length;
int cols = arr[0].length;
if (rows > cols) {
for (int i = 0; i < rows; i++) {
arr[i] = Arrays.copyOf(arr[i], rows);
}
} else if (cols > rows) {
arr = Arrays.copyOf(arr, cols);
for (int i = 0; i < cols; i++) {
arr[i] = new int[cols];
}
}
return arr;
}
}
/*
주어진 배열의 행과 열의 수를 확인합니다.
행이 열보다 많은 경우, 각 행의 끝에 0을 추가하여 열의 수를 행의 수와 같게 합니다.
열이 행보다 많은 경우, 각 열의 끝에 0을 추가하여 행의 수를 열의 수와 같게 합니다.
*/
테스트 1입력값 〉[[572, 22, 37], [287, 726, 384], [85, 137, 292], [487, 13, 876]]
기댓값 〉[[572, 22, 37, 0], [287, 726, 384, 0], [85, 137, 292, 0], [487, 13, 876, 0]]
실행 결과 〉테스트를 통과하였습니다.
테스트 2입력값 〉[[57, 192, 534, 2], [9, 345, 192, 999]]
기댓값 〉[[57, 192, 534, 2], [9, 345, 192, 999], [0, 0, 0, 0], [0, 0, 0, 0]]실행 결과 〉
실행한 결괏값 [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]이 기댓값 [[57,192,534,2],[9,345,192,999],[0,0,0,0],[0,0,0,0]]과 다릅니다.
테스트 3입력값 〉[[1, 2], [3, 4]]
기댓값 〉[[1, 2], [3, 4]]
실행 결과 〉테스트를 통과하였습니다.
새로운 행을 추가할 때 발생하는 것 같다..ㅠ
package Lv0;
/*
이차원 정수 배열 arr이 매개변수로 주어집니다. arr의 행의 수가 더 많다면 열의 수가 행의 수와 같아지도록 각 행의 끝에 0을 추가하고,
열의 수가 더 많다면 행의 수가 열의 수와 같아지도록 각 열의 끝에 0을 추가한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
*/
public class H181830 {
public int[][] solution(int[][] arr) {
int rows = arr.length;
int cols = arr[0].length;
int[][] answer;
if (rows > cols) {
answer = new int[rows][rows];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
answer[i][j] = arr[i][j];
}
}
} else if (cols > rows) {
answer = new int[cols][cols];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
answer[i][j] = arr[i][j];
}
}
} else {
answer = arr;
}
return answer;
}
}
/*
주어진 배열의 행과 열의 수를 확인합니다.
행이 열보다 많은 경우, 각 행의 끝에 0을 추가하여 열의 수를 행의 수와 같게 합니다.
열이 행보다 많은 경우, 각 열의 끝에 0을 추가하여 행의 수를 열의 수와 같게 합니다.
행이 더 많은 경우에는 행의 크기에 맞춰서 새로운 배열을 생성하고, 열이 더 많은 경우에는 열의 크기에 맞춰서 새로운 배열을 생성
그리고 기존 배열의 값들을 새로운 배열에 복사합니다. 행과 열의 크기가 같은 경우에는 기존의 배열을 그대로 반환
*/
728x90
반응형
LIST