Algorithm/📖Baekjoon
#1051 숫자 정사각형
yewoneeee
2022. 6. 23. 17:40
# 문제
# 입력 및 출력
# 풀이
정사각형 최대 한 변의 길이(len) = min(N, M)
len이 1이 될 때까지 len 길이를 줄여가면서 가장 큰 사각형을 찾음
#include <iostream>
using namespace std;
int sq[50][50];
int N, M, len;
void input() {
char c;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
cin >> c;
sq[i][j] = c - 48;
}
}
}
bool check(int x, int y) {
bool c = true;
if (sq[x][y] != sq[x][y + len]) c = false;
if (sq[x][y] != sq[x + len][y]) c = false;
if (sq[x][y] != sq[x + len][y + len]) c = false;
return c;
}
int main() {
cin >> N >> M;
input();
len = N < M ? N : M;
while (--len) {
for (int i = 0; i < N - len; i++) {
for (int j = 0; j < M - len; j++) {
if (check(i, j)) {
cout << (len + 1)*(len + 1) << "\n";
return 0;
}
}
}
}
cout << 1 << "\n";
return 0;
}