728x90
반응형
https://leetcode.com/problems/maximal-square/
규칙을 찾아서 DP 배열을 작성한다.
class Solution {
public int maximalSquare(char[][] matrix) {
//1. ds
int m = matrix.length;
int n=matrix[0].length;
//DP에서 필요한 길이만큼 배열 생성
int[][] dp = new int[m+1][n+1];
int maxSize= 0;
//2. loop
//1번칸 부터 시작해, i-1 j-1칸에 채운다.
for(int i=1; i<=m;i++){
for(int j=1;j<=n;j++){
//첫 번째 사각형의 경우 : matrix[1][1] -> dp[2][2]=2가 된다.
if(matrix[i-1][j-1] == '1'){
//int min=Math.min(dp[2][1], dp[1][2]);
int min=Math.min(dp[i][j-1], dp[i-1][j]);
//가능한 사각형의 최솟값이므로, dp[2][1]과 dp[1][2]의 최솟값을 선택해, dp[1][1]과 비교해 작은 값 선택해 +1
dp[i][j]=Math.min(min, dp[i-1][j-1])+1;
//최대 사각형 개수 갱신
maxSize=Math.max(maxSize, dp[i][j]);
}
}
}
//사격형의 개수 이므로, 최대 크기의 제곱
return maxSize*maxSize;
}
}
+) 연관 문제
https://leetcode.com/problems/maximal-rectangle/
728x90
반응형
'Java > Java 알고리즘 LeetCode' 카테고리의 다른 글
[LeetCode- Part. 4] 5. 이진 매트릭스 최단경로 (+BFS) (0) | 2022.11.13 |
---|---|
[LeetCode- Part. 4] 3. 작업 일정의 최소 난이도 # (+ 2차원 DP) (0) | 2022.11.13 |
[LeetCode- Part. 4] 2. 슬라이딩 윈도우 최댓값 ##(+슬라이딩 윈도우, Deque) (1) | 2022.11.13 |
[LeetCode- Part. 4] 1. N일 후 감옥 ## (+ 재귀함수, Arrays.toString, 삼항연산자) (0) | 2022.11.12 |
[LeetCode- Part. 3] 5. Province의 수 (+DFS) (0) | 2022.11.12 |