문제 설명
풀이
코드
import java.util.*; | |
import java.io.*; | |
/** | |
* https://www.acmicpc.net/problem/1915 | |
* BOJ 백준온라인져지 1915 가장 큰 정사각형 풀이 | |
*/ | |
public class Main { | |
private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); | |
public static void main(String args[]) throws IOException { | |
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); | |
StringTokenizer st = new StringTokenizer(br.readLine()); | |
int N = Integer.parseInt(st.nextToken()); | |
int M = Integer.parseInt(st.nextToken()); | |
int dp[][] = new int[N + 1][M + 1]; | |
int result = 0; | |
for (int i = 1; i <= N; i++) { | |
String str = br.readLine(); | |
for (int j = 1; j <= M; j++) { | |
if (str.charAt(j - 1) == '1') { | |
result = Math.max(result, dp[i][j] = Math.min(dp[i - 1][j], Math.min(dp[i - 1][j - 1], dp[i][j - 1])) + 1); | |
} | |
} | |
} | |
bw.write(String.valueOf(result * result)); | |
bw.flush(); | |
} | |
} |
문제
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개의 숫자로 배열이 주어진다.
출력
첫째 줄에 가장 큰 정사각형의 넓이를 출력한다.
예제 입력 1
4 4 0100 0111 1110 0010
예제 출력 1
4
'IT > 알고리즘' 카테고리의 다른 글
2018-07-23 ~ 2018-07-29 (0) | 2018.08.13 |
---|---|
~ 2018-07-22 풀이 목록 (0) | 2018.08.13 |
BOJ 백준온라인져지 5014 스타트링크 풀이 (0) | 2018.07.04 |
BOJ 백준온라인져지 10833 사과 풀이 (0) | 2018.07.03 |
BOJ 백준온라인져지 2566 최댓값 풀이 (0) | 2018.07.03 |