문제
알고리즘
- 반복문을 통해 모든 좌표를 확인한다.
- 현재 좌표에 쓰여 있는 수가 j 축에 또 있는지 확인한다.
- 똑같은 수가 있다면 두 좌표를 포함하는 정사각형 좌표가 범위 내에 있고 똑같은 수인지 확인한다.
- 똑같은 수라면 길이를 제곱하여 answer에 저장한다.
- answer에 최댓값을 출력한다.
코드
import sys
n, m = map(int, sys.stdin.readline().split())
graph = [list(map(int ,sys.stdin.readline().strip())) for _ in range(n)]
answer = []
for i in range(n):
for j in range(m):
target = graph[i][j] # 현재 꼭짓점에 쓰여 있는 수
# 반복문을 통해 j축에 target과 똑같은 수를 확인
for k in range(j, m):
# target과 똑같은 수가 있다면 정사각형 위치가 범위 내에 있고 똑같은 수가 있는지 확인
if graph[i][k] == target and i + k - j < n and k < m:
if graph[i + k - j][j] == target and graph[i + k - j][k] == target:
# 정사각형 위치에 모두 똑같은 수가 있다면 길이를 제곱
answer.append((k - j + 1) ** 2)
# 제일 큰 정사각형의 크기를 출력
print(max(answer))
github
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 1057번(파이썬): 토너먼트 (0) | 2022.04.13 |
---|---|
[baekjoon] 백준 1052번(파이썬): 물통 (0) | 2022.04.12 |
[baekjoon] 백준 14247번(파이썬): 나무 자르기 (0) | 2022.04.10 |
[baekjoon] 백준 2615번(파이썬): 오목 (0) | 2022.04.10 |
[baekjoon] 백준 1780번(파이썬): 종이의 개수 (0) | 2022.04.09 |