-Code
n, m = map(int, input().split())
arr = [list(map(int, input())) for _ in range(n)]
dp = [[0] * m for _ in range(n)]
res = 0
for i in range(n):
for j in range(m):
if arr[i][j] == 1:
if i > 0 and j > 0:
dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1
else:
dp[i][j] = 1
res = max(res, dp[i][j])
print(res ** 2)
dp를 (x - 1, y), (x, y - 1), (x - 1, y - 1)가 모두 1 이상인 경우 계산해서 작성해야 하는 것을 알게되고 해결을 해보았으나 if문의 문제로 여러번 틀려서 바뀌서 해결을 했습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬] 33170번 ブラックジャック (Blackjack) (0) | 2025.01.26 |
---|---|
[백준/파이썬] 33169번 所持金 (Money On Me) (0) | 2025.01.25 |
[백준/파이썬] 1389번 케빈 베이컨의 6단계 법칙 (0) | 2025.01.23 |
[백준/파이썬] 15686번 치킨 배달 (0) | 2025.01.22 |
[백준/파이썬] 30216번 Increasing Sublist (0) | 2025.01.21 |