Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

csct3434

[level 2] 가장 큰 정사각형 찾기 - 12905 본문

프로그래머스

[level 2] 가장 큰 정사각형 찾기 - 12905

csct3434 2024. 2. 28. 19:47

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

class Solution {

    private int rows;
    private int cols;

    public int solution(int[][] board) {
       int answer = 0;

       rows = board.length;
       cols = board[0].length;
       int[][] dp = new int[rows + 1][cols + 1];

       init(board, rows, cols, dp);

       for (int x = 1; x <= rows; x++) {
          for (int y = 1; y <= cols; y++) {
             if (dp[x][y] != 1) {
                continue;
             }

             dp[x][y] = 1 + Math.min(
                Math.min(dp[x - 1][y - 1], dp[x - 1][y]), dp[x][y - 1]);

             answer = Math.max(answer, dp[x][y] * dp[x][y]);
          }
       }

       return answer;
    }

    private void init(int[][] board, int rows, int cols, int[][] dp) {
       for (int x = 0; x < rows; x++) {
          for (int y = 0; y < cols; y++) {
             dp[x + 1][y + 1] = board[x][y];
          }
       }
    }
}