[프로그래머스]정사각형으로 만들기, 2차원 배열 이해

jaeyong Lee·2024년 7월 6일
0

2차원 배열의 크기를 정사각형으로 만드는게 관건)

열이 더 많다면

int[][] arr = {
    {1, 2, 3},
    {4, 5, 6}
};
  1. 2차원 배열을 열의크기로 고정 ( 빈 값은 자동으로 0 채워짐)
  2. 배열 값 그대로 입력
if (col > row) {
    int[][] temp = new int[col][col]; // 새로운 3x3 배열을 만듭니다.
    for (int i = 0; i < col; i++) {
        for (int j = 0; j < row; j++) {
            temp[j][i] = arr[j][i]; // 원래 배열의 값을 새로운 배열에 복사합니다.
        }
        // temp[row][i] = 0; // 주석 처리된 부분: 각 열의 마지막 행에 0을 추가하려는 시도
    }
    return temp; // 새로운 배열을 반환합니다.
}

행이 더 크다면

int[][] arr = {
    {1, 2},
    {3, 4},
    {5, 6}
};
  1. 2차원 배열 행,열 크기모두 행의 크기로 고정(자동으로 열 채워짐)
  2. 매개변수 배열 값 그대로 넣기
if (row > col) {
    int[][] temp = new int[row][row]; // 새로운 3x3 배열을 만듭니다.
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            temp[i][j] = arr[i][j]; // 원래 배열의 값을 새로운 배열에 복사합니다.
        }
        temp[i][col] = 0; // 각 행의 마지막 열에 0을 추가합니다.
    }
    return temp; // 새로운 배열을 반환합니다.
}

정리)

쉽게 생각하면 답 나옴. 정사각형이니 길이가 긴 쪽으로 배열 만들어 주고, 배열 생성시 빈 값은 0으로 채워진다는 점 고려하면 됨

정답 코드)

class Solution {
    public int[][] solution(int[][] arr) {
        
        //2024 07 27 3차 수정
        int row = arr.length;
        int col = arr[0].length;
        
        if(row > col){
            int[][] rectangle = new int[row][row];
                
                for(int i=0 ; i < row ; i++){
                    for(int j=0 ; j < col ; j++){
                        rectangle[i][j] = arr[i][j];
                    }
                }
            
            return rectangle;
        }else if(col > row){
             int[][] rectangle = new int[col][col];
            
            for(int i=0 ; i < row ; i++){
                for(int j=0 ; j <col ; j++){
                    rectangle[i][j] = arr[i][j];
                }
            }
            return rectangle;
            
        }else {
            return arr;
        }
        
        
        
    }
}

0개의 댓글

관련 채용 정보