Algorithm/백준 알고리즘_Python
[알고리즘][Python] 백준(BOJ) 1915 가장 큰 정사각형_파이썬
알파이
2020. 9. 27. 08:07
1915 가장 큰 정사각형 www.acmicpc.net/problem/1915
1915번: 가장 큰 정사각형
첫째 줄에 n, m(1 ≤ n, m ≤ 1,000)이 주어진다. 다음 n개의 줄에는 m개의 숫자로 배열이 주어진다.
www.acmicpc.net
문제 풀기 전 공부할 것 : 다이나믹 프로그래밍
풀이
<내용>
- 배열을 입력받는다.
- 이중 for문을 돌면서
- (i, j)가 1이 아니라면 정사각형을 만들 수 없다.
- 1이라면 (i-1, j), (i, j-1), (i-1, j-1)에서 만들 수 있는 정사각형의 변의 최대 길이 중 최솟값 + 1의 크기로 만들 수 있다.
<코드>
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
board = [list(map(int, input().rstrip())) for _ in range(n)]
for i in range(1, n):
for j in range(1, m):
if board[i][j] != 0:
board[i][j] += min(board[i-1][j-1], board[i-1][j], board[i][j-1])
res = 0
for row in board:
res = max(res, max(row))
print(res**2)
728x90
반응형