알고리즘 문제풀이/백준
[백준/BOJ] 1051번 숫자 정사각형 (C++)
노력의천재
2021. 11. 16. 17:34
https://www.acmicpc.net/problem/1051
문제의 이해가 좀 어려웠는데, 난이도는 쉬운 문제였다. 꼭지점의 값이 모두 같은 가장 큰 정사각형의 넓이를 찾는 완전 탐색(브루트 포스) 문제였다.
#include <iostream>
#include <algorithm>
using namespace std;
int map[51][51];
int main(void) {
freopen("input.txt", "rt", stdin);
ios_base::sync_with_stdio(false);
cin.tie(0);
int n, m, answer = 1;
cin >> n >> m;
for(int i = 0; i < n; i++) {
string num;
cin >> num;
for(int j = 0; j < num.size(); j++) {
map[i][j] = num[j] - '0';
}
}
for(int k = 2; k <= min(n, m); k++) {
for(int i = 0; i < n - k + 1; i++) {
for(int j = 0; j < m - k + 1; j++) {
if(map[i][j] == map[i + k - 1][j] && map[i][j] == map[i][j + k - 1] && map[i][j] == map[i + k - 1][j + k - 1]) {
answer = max(answer, k * k);
}
}
}
}
cout << answer;
}