본문 바로가기
개발로그/알고리즘

프로그래머스 Lv.0 정사각형으로 만들기

by 쩜징 2023. 7. 28.

프로그래머스 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;
    }
}

반응형

댓글