Algorithm/Online judge
[백준] 1051번 > 숫자 정사각형
민철킹
2021. 3. 3. 18:13
1051번: 숫자 정사각형
N*M크기의 직사각형이 있다. 각 칸은 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는
www.acmicpc.net
문제
N*M크기의 직사각형이 있다. 각 칸은 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는 열에 평행해야 한다.
입력
첫째 줄에 N과 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 수가 주어진다.
출력
첫째 줄에 정답 정사각형의 크기를 출력한다.
예제 입력 1
3 5
42101
22100
22101
예제 출력 1
9
풀이
n, m = map(int, input().split())
num_list = [list(map(int, input())) for _ in range(n)]
answer = 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 num_list[i][j] == num_list[i][j+k] == num_list[i+k][j] == num_list[i+k][j+k]:
if answer < k:
answer = k
print((answer+1)**2)
주어진 범위안에서 탐색을 하고, k값을 증가시키며 최대의 꼭짓점을 찾는다.
반응형