| ps | |
|---|---|
| 링크 | acmicpc.net/… |
| 출처 | BOJ |
| 문제 번호 | 1687 |
| 문제명 | 행렬 찾기 |
| 레벨 | 골드 3 |
| 분류 |
부분그리드 |
| 시간복잡도 | O(nm) |
| 인풋사이즈 | n<=333, m<=333 |
| 사용한 언어 | Python 3.13 |
| 제출기록 | 32412KB / 72ms |
| 최고기록 | 68ms |
| 해결날짜 | 2025/02/13 |
"""Solution code for "BOJ 1687. 행렬 찾기".
- Problem link: https://www.acmicpc.net/problem/1687
- Solution link: http://www.teferi.net/ps/problems/boj/1687
Tags: [nge]
"""
from teflib import seqtask
def main():
N, M = [int(x) for x in input().split()]
grid = [input() for _ in range(N)]
answer = 0
heights = [0] * M
for row in grid:
for i, x in enumerate(row):
heights[i] = heights[i] + 1 if x == '0' else 0
begs, ends = seqtask.max_ranges_for_each_min(heights)
max_area = max(h * (e - b) for h, b, e in zip(heights, begs, ends))
answer = max(max_area, answer)
print(answer)
if __name__ == '__main__':
main()