diff --git "a/\353\260\261\354\244\200/Silver/1051.\342\200\205\354\210\253\354\236\220\342\200\205\354\240\225\354\202\254\352\260\201\355\230\225/README.md" "b/\353\260\261\354\244\200/Silver/1051.\342\200\205\354\210\253\354\236\220\342\200\205\354\240\225\354\202\254\352\260\201\355\230\225/README.md" new file mode 100644 index 0000000..e88944a --- /dev/null +++ "b/\353\260\261\354\244\200/Silver/1051.\342\200\205\354\210\253\354\236\220\342\200\205\354\240\225\354\202\254\352\260\201\355\230\225/README.md" @@ -0,0 +1,28 @@ +# [Silver III] 숫자 정사각형 - 1051 + +[문제 링크](https://www.acmicpc.net/problem/1051) + +### 성능 요약 + +메모리: 31120 KB, 시간: 40 ms + +### 분류 + +브루트포스 알고리즘, 구현 + +### 제출 일자 + +2024년 5월 17일 15:07:41 + +### 문제 설명 + +
N×M크기의 직사각형이 있다. 각 칸에는 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는 열에 평행해야 한다.
+ +### 입력 + +첫째 줄에 N과 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 수가 주어진다.
+ +### 출력 + +첫째 줄에 정답 정사각형의 크기를 출력한다.
+ diff --git "a/\353\260\261\354\244\200/Silver/1051.\342\200\205\354\210\253\354\236\220\342\200\205\354\240\225\354\202\254\352\260\201\355\230\225/\354\210\253\354\236\220\342\200\205\354\240\225\354\202\254\352\260\201\355\230\225.py" "b/\353\260\261\354\244\200/Silver/1051.\342\200\205\354\210\253\354\236\220\342\200\205\354\240\225\354\202\254\352\260\201\355\230\225/\354\210\253\354\236\220\342\200\205\354\240\225\354\202\254\352\260\201\355\230\225.py" new file mode 100644 index 0000000..77daab6 --- /dev/null +++ "b/\353\260\261\354\244\200/Silver/1051.\342\200\205\354\210\253\354\236\220\342\200\205\354\240\225\354\202\254\352\260\201\355\230\225/\354\210\253\354\236\220\342\200\205\354\240\225\354\202\254\352\260\201\355\230\225.py" @@ -0,0 +1,31 @@ +import sys + + +# sys.setrecursionlimit(100000) + +def input(): + return sys.stdin.readline() + + +# main +if __name__ == "__main__": + N, M = map(int, input().split()) + lst = sorted([N, M]) + rect = [] + for i in range(N): + rect.append(list(input().rstrip())) + + S = lst[0] + while True: + flag = 0 + for i in range(N - S + 1): + for j in range(M - S + 1): + if rect[i][j] == rect[i + S - 1][j] == rect[i][j + S - 1] == rect[i + S - 1][j + S - 1]: + flag = 1 + break + + if flag == 1: + break + S -= 1 + + print(S ** 2) \ No newline at end of file