minghxx.blog
  • [프로그래머스 / 자바] 정사각형으로 만들기
    2023년 11월 22일 09시 08분 36초에 업로드 된 글입니다.
    작성자: 민발자
    728x90

    문제

    이차원 정수 배열 arr이 매개변수로 주어집니다. arr의 행의 수가 더 많다면 열의 수가 행의 수와 같아지도록 각 행의 끝에 0을 추가하고, 열의 수가 더 많다면 행의 수가 열의 수와 같아지도록 각 열의 끝에 0을 추가한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.

    풀이

    class Solution {
        public int[][] solution(int[][] arr) {
            int row = arr.length;
            int column= arr[0].length;
            int[][] answer = column >= row ? new int[column][column] : new int[row][row];
    
            for(int i = 0; i < row; i++){
                for(int j = 0; j < column; j++) {
                    answer[i][j] = arr[i][j];
                }
            }
            return answer;
        }
    }

     

    arr 행 열 값을 변수로 저장

    행하고 열 중 큰 값으로 answer 이차원 배열 생성(Math.Max() 메서드 사용하면 좀 더 깔끔하게 작성 가능할 듯)

    arr의 행, 열 길이만큼 이중 반복문으로 넣어줌

     

    참고할만한 다른 사람 풀이

    class Solution {
        public int[][] solution(int[][] arr) {
            int max = Math.max(arr.length, arr[0].length);
            int[][] array = new int[max][max];
    
            for (int i = 0; i < arr.length; i++) {
                System.arraycopy(arr[i], 0, array[i], 0, arr[0].length);
            }
            return array;
        }
    }

    arraycopy() →  arr[i] 줄을 0번째부터 array[i] 줄의 0번째칸으로 arr[0].lenght 길이만큼 복사

     

     

     

     

     

    728x90
    댓글