Algorithm/Baekjoon

0608_백준 1051번 : 숫자 정사각형/ 부르트포스 알고리즘/ Python

728x90
반응형

[코드 구현]

n, m = map(int, input().split())
arr = [list(map(int, input())) for _ in range(n)]
res = 0
for i in range(n):
    for j in range(m):
        for k in range(n if n < m else m): # 행과 열 중 더 작은 것을 기준으로 정사각형 탐색
            if i+k < n and j+k < m: # 주어진 인덱스 벗어나지 않게
                if arr[i][j] == arr[i][j+k] == arr[i+k][j] == arr[i+k][j+k]: # 꼭짓점의 숫자가 모두 같은 지 확인
                    if res < k:
                        res = k
print((res+1)*(res+1))

[문제 출처]

백준 1051번 숫자 정사각형 : https://www.acmicpc.net/problem/1051

 

1051번: 숫자 정사각형

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

www.acmicpc.net

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

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

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