728x90
백준 1915 가장 큰 정사각형
문제
n×m의 0, 1로 된 배열이 있다. 이 배열에서 1로 된 가장 큰 정사각형의 크기를 구하는 프로그램을 작성하시오.
0 | 1 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 1 | 1 | 0 |
0 | 0 | 1 | 0 |
위와 같은 예제에서는 가운데의 2×2 배열이 가장 큰 정사각형이다.
입력
첫째 줄에 n, m(1 ≤ n, m ≤ 1,000)이 주어진다. 다음 n개의 줄에는 m개의 숫자로 배열이 주어진다.
출력
첫째 줄에 가장 큰 정사각형의 넓이를 출력한다.
제출
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
long[][] D = new long[1001][1001];
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
long max = 0;
for (int i = 0; i < n; i++) {
String mline = sc.next();
for (int j = 0; j < m; j++) {
D[i][j] = Long.parseLong(String.valueOf(mline.charAt(j)));
if (D[i][j] == 1 && j > 0 && i > 0) {
D[i][j] = Math.min(D[i - 1][j - 1], Math.min(D[i - 1][j], D[i][j - 1])) + D[i][j];
}
if (max < D[i][j]) {
max = D[i][j];
}
}
}
System.out.println(max * max);
}
}
예제
4 4
0100
0111
1110
0010
결과
1915번: 가장 큰 정사각형
첫째 줄에 n, m(1 ≤ n, m ≤ 1,000)이 주어진다. 다음 n개의 줄에는 m개의 숫자로 배열이 주어진다.
www.acmicpc.net
728x90
'JAVA > 백준' 카테고리의 다른 글
[Java] 백준 2342 Dance Dance Revolution - 동적 계획법(11) (0) | 2023.01.18 |
---|---|
[Java] 백준 1328 고층 빌딩 - 동적 계획법(10) (0) | 2023.01.17 |
[Java] 백준 9252 LCS 2 - 동적 계획법(8) (1) | 2023.01.15 |
[Java] 백준 13398 연속합 2 - 동적 계획법(7) (1) | 2023.01.14 |
[Java] 백준 10844 쉬운 계단 수 - 동적 계획법(6) (0) | 2023.01.13 |
댓글