코딩하는 해맑은 거북이
[Python] 숫자 정사각형 - 백준 본문
해당 글은 백준 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)
'코딩테스트' 카테고리의 다른 글
[Python] DFS와 BFS - 백준 (DFS/BFS) (0) | 2022.12.30 |
---|---|
[Python] 문자열 - 백준 (0) | 2022.12.29 |
[Python] 순열 사이클 - 백준 (BFS) (0) | 2022.12.26 |
[Python] 시리얼 번호 - 백준 (정렬) (0) | 2022.12.25 |
[Python] 문서 검색 - 백준 (0) | 2022.12.24 |
Comments