inblog logo
|
stupefyee
    알고리즘문제풀기

    [JAVA 문제 풀이] 392. 가장 큰 정사각형 찾기

    프로그래머스 (12905)
    Stupefyee's avatar
    Stupefyee
    Jul 22, 2025
    [JAVA 문제 풀이] 392. 가장 큰 정사각형 찾기
    Contents
    내가 작성한 코드다른 사람의 코드
    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/12905
    notion image
     

    내가 작성한 코드

    class Solution { public int solution(int[][] board) { int row = board.length; int col = board[0].length; int[][] dp = new int[row][col]; // 정사각형 한 변의 최대 길이 저장 int answer = 0; // 최대 정사각형 한 변 길이 // 초기값 복사 for (int i = 0; i < row; i++) { dp[i][0] = board[i][0]; if (dp[i][0] > answer){ answer = dp[i][0]; } } for (int j = 0; j < col; j++) { dp[0][j] = board[0][j]; if (dp[0][j] > answer) { answer = dp[0][j]; } } // DP 진행 for (int i = 1; i < row; i++) { for (int j = 1; j < col; j++) { if (board[i][j] == 1) { dp[i][j] = Math.min(Math.min(dp[i - 1][j], dp[i][j - 1]), dp[i - 1][j - 1]) + 1; if (dp[i][j] > answer) answer = dp[i][j]; } } } return answer * answer; // 넓이 반환 } }
     

    다른 사람의 코드

    class Solution { public int solution(int[][] board) { int answer = 0; for (int i = 0; i < board.length; i++) { for (int j = 0; j < board[i].length; j++) { if (board[i][j] > 0) { // 위 , 좌 , 좌측 대각선 값을 찾아 그중 최소값 + 1 로 업데이트 int up = (j - 1 >= 0) ? board[i][j - 1] : 0; int left = (i - 1 >= 0) ? board[i - 1][j] : 0; int diagonal = (i - 1 >= 0 && j - 1 >= 0) ? board[i - 1][j - 1] : 0; board[i][j] = Math.min(Math.min(up, left), diagonal) + 1; answer = Math.max(answer, board[i][j]); // 최대값을 업데이트 } } } return answer * answer; } }
     
    Share article
    Contents
    내가 작성한 코드다른 사람의 코드

    stupefyee

    RSS·Powered by Inblog