코딩하는 해맑은 거북이

[Python] 숫자 정사각형 - 백준 본문

코딩테스트

[Python] 숫자 정사각형 - 백준

#CJE 2022. 12. 26.
해당 글은 백준 1051번 문제 '숫자 정사각형'을 다룬다.

문제

https://www.acmicpc.net/problem/1051

 

1051번: 숫자 정사각형

N×M크기의 직사각형이 있다. 각 칸에는 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행

www.acmicpc.net

 

설명

3중 for문으로 범위만 잘 설정하면 해결할 수 있는 문제이다.

정사각형 크기는 2~min(n, m)까지의 크기를 가질 수 있고

정사각형의 왼쪽 꼭짓점은 행은 0~n-s, 열은 0~m-s의 크기를 가진다.

 

코드

n, m = map(int, input().split())
square = []
for i in range(n):
    square.append(list(map(int, input())))

result = 1          # a b
                    # c d
for s in range(2, min(n, m)+1):
    for i in range(0, n-s+1):
        for j in range(0, m-s+1):
            a = square[i][j]
            b = square[i][j+s-1]
            c = square[i+s-1][j]
            d = square[i+s-1][j+s-1]
            if a == b and b == c and c == d:
                result = s
print(result*result)

     

 

 

Comments