프로그래머스 Lv.0 정사각형으로 만들기
이차원 정수 배열 arr이 주어진다.
arr의 행 수가 더 많다면
열의 수가 행의 수와 같아지도록 각 행의 끝에 0을 추가하고,
열의 수가 더 많다면
행의 수가 열의 수와 같아지도록 각 열의 끝에 0을 추가한다.
이렇게 만들어진 이차원 배열을 return한다.
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]] |
** 풀이 방법
먼저, arr.length와 arr[0].length를 비교해야 한다.
이 말인 즉슨 행과 열의 개수를 비교해야 한다는 것이다.
행과 열의 길이를 비교해서
더 큰 길이의 이차원 배열을 생성한다.
int a = arr.length; int b = arr[0].length;
int[][] answer = (a > b ? new int[a][a] : new int[b][b]);
배열을 생성하고,
arr의 원소들을 answer에 저장한다.
나머지 빈 공간들은 자동으로
0으로 채워지므로 return해서 끝낸다.
for (int i=0; i<a; i++) {
for (int j=0; j<b; j++) {
answer[i][j] = arr[i][j];
}
}
<> 전체 코드 </>
class Solution {
public int[][] solution(int[][] arr) {
int a = arr.length; int b = arr[0].length;
int[][] answer = (a > b ? new int[a][a] : new int[b][b]);
for (int i=0; i<a; i++) {
for (int j=0; j<b; j++) {
answer[i][j] = arr[i][j];
}
}
return answer;
}
}
반응형
'개발로그 > 알고리즘' 카테고리의 다른 글
프로그래머스 Lv.0 직사각형 넓이 구하기 (0) | 2023.07.30 |
---|---|
프로그래머스 Lv.0 문자열이 몇 번 등장하는지 세기 (0) | 2023.07.28 |
프로그래머스 Lv.0 구슬을 나누는 경우의 수 (0) | 2023.07.28 |
프로그래머스 Lv.0 무작위로 k개의 수 뽑기 (0) | 2023.07.28 |
프로그래머스 Lv.0 그림 확대 (0) | 2023.07.28 |
댓글