괴물
시간 제한1초메모리 제한32 MB
0과 1로 이루어진 N x M 격자에서 남아 있는 1 세포 하나를 골라 파괴했을 때 남는 모든 1 부분행렬의 개수가 최소가 되도록 하고, 그 최솟값을 구한다.
문제
사람이 켄타우루스자리의 한 행성에 처음으로 내려섰다. 그 행성에는 괴물이 살고 있었다. 괴물의 방어 체계는 행 열 행렬 모양으로 놓인 전투 칸으로 이루어져 있다.
우리 군은 이미 몇 칸을 공격해 부쉈다. 이제 당신이 멀쩡한 칸 하나를 골라 부술 차례다.
방어 체계의 강도는 멀쩡한 칸만 담고 있는 부분행렬의 개수다. 서로 겹치는 부분행렬도 따로 센다. 부분행렬은 원래 행렬에서 다음을 지워서 얻는, 비어 있지 않은 행렬이다.
- 첫 행부터 시작하는 연속한 행 몇 개
- 마지막 행에서 끝나는 연속한 행 몇 개
- 첫 열부터 시작하는 연속한 열 몇 개
- 마지막 열에서 끝나는 연속한 열 몇 개
방어 체계의 강도가 가장 작아지도록 부술 칸을 고르고, 공격이 끝난 뒤의 강도를 구하는 프로그램을 작성하라.
입력
첫째 줄에 행의 개수 과 열의 개수 이 공백으로 구분되어 주어진다 ().
다음 개 줄에 길이가 인 이진 문자열이 한 줄에 하나씩 주어진다. 이 문자열은 행렬의 칸을 나타내고, 1은 멀쩡한 칸, 0은 우리 군이 이미 부순 칸이다.
멀쩡한 칸은 적어도 하나 있다.
출력
공격이 끝난 뒤 방어 체계의 강도를 한 줄에 출력한다.
제한
- 행렬의 각 줄은 문자 0과 1로만 이루어진다.
- 멀쩡한 칸이 적어도 하나 있다.