구현/숫자 정사각형

Q·2021년 9월 3일
0

알고리즘/백준

목록 보기
43/70

문제 설명


문제

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

입력

첫째 줄에 N과 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 수가 주어진다.

출력

첫째 줄에 정답 정사각형의 크기를 출력한다.


문제링크

전체 코드

import sys
input = sys.stdin.readline

def find_squre(s): # 이 부분이 제일 중요
    for i in range(n-s+1):
        for j in range(m-s+1):
            if matrix[i][j] == matrix[i][j+s-1] == matrix[i+s-1][j] == matrix[i+s-1][j+s-1]:
                return True
    return False

n, m =map(int, input().split())

matrix = [list(map(int, input().strip())) for _ in range(n)]
size = min(n, m)

for i in range(size, 0, -1):
    if find_squre(i):
        print(i**2)
        break

해결 방법

n과 m중 작은 수를 size에 넣고 그 size를 -1씩 하면서 find_squre함수에 넣어 정사각형을 이룬다면 그 때의 넓이를 출력한다.

profile
Data Engineer

0개의 댓글