BOJ - 1051

주의·2024년 1월 18일
0

boj

목록 보기
95/214

백준 문제 링크
숫자 정사각형

❓접근법

  1. 가장 큰 정사각형은 N과 M 중 작은 값이 될 수 밖에 없다.
  2. 초기값 size = min(N,M)으로 설정하고, 큰 수 부터 작은 수로 내려오면서
    좌표 + s가 N과 M의 범위 안에 있고, 꼭짓점이 다 같을 때
    max_size를 s+1 ** 2로 바꿔준다.
  3. max_size가 0이면 1을, 0이 아니면 max_size를 출력한다.

👌🏻코드

N, M = map(int, input().split())

lst = []
for _ in range(N):
    lst.append(list(map(int, input())))
    
    
size = min(N,M)

max_size = 0

for s in range(size, 0, -1):
    for i in range(N):
        for j in range(M):
            if (i + s < N) and (j + s < M) and (lst[i][j] == lst[i][j+s] == lst[i+s][j] == lst[i+s][j+s]):
                print(lst[i][j])
                if max_size < ((s+1) ** 2):
                    max_size = (s+1) ** 2
if max_size == 0:
    print(1)
else:
    print(max_size)

0개의 댓글