반응형
숫자 정사각형
문제
N×M크기의 직사각형이 있다. 각 칸에는 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는 열에 평행해야 한다.
입력
첫째 줄에 N과 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 수가 주어진다.
출력
첫째 줄에 정답 정사각형의 크기를 출력한다.
예제 입력 1
3 5
42101
22100
22101
예제 출력 1
9
예제 입력 2
2 2
12
34
예제 출력 2
1
예제 입력 3
2 4
1255
3455
예제 출력 3
4
예제 입력 4
1 10
1234567890
예제 출력 4
1
예제 입력 5
11 10
9785409507
2055103694
0861396761
3073207669
1233049493
2300248968
9769239548
7984130001
1670020095
8894239889
4053971072
예제 출력 5
49
문제 풀이
n,m = map(int,input().split())
matrix = []
for i in range(n):
a = list(input())
matrix.append(a)
# print(matrix)
min_num = min(n,m) # ex)3 최대 정사각형 크기는 3이 넘을 수 없음
# range_len = min_num +1
answer = []
while True:
for i in range(n-min_num):
for j in range(m-min_num):
# print(i,j)
if matrix[i][j] == matrix[i][j+min_num] == matrix[i+min_num][j] == matrix[i+min_num][j+min_num]:
# print(matrix[i][j])
# print(min_num)
print((min_num+1)**2)
exit()
else:
min_num-=1
문제 해석
딥러닝 기법중에 CNN기법이랑 비슷하다 생각하면된다. min_num을 기반으로 filter를 만들어서 양 모서리를 비교할 수 있도록 한다. 필터의 크기를 1씩 줄여가며 탐색을 진행하면서 정사각형이 만들어지면 그 즉시 종료한다.
'Algorithm > baekjoon' 카테고리의 다른 글
Baekjoon [1743] 음식물 피하기 - python (1) | 2024.01.19 |
---|---|
Baekjoon [11501] 주식 - python (0) | 2024.01.18 |
Baekjoon [2477] 참외밭 - python (3) | 2023.12.07 |
Baekjoon [2573] 빙산 - python (0) | 2023.11.07 |
Baekjoon [1940] 그림 - python (1) | 2023.10.19 |