문제 링크입니다: https://www.acmicpc.net/problem/1051
간단한 브루트 포스(Brute Force) 문제였습니다.
주의할 점은, 길이가 1인 정사각형이 최소이므로 초기 result = 1로 초기화해줘야한다는 점입니다!
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
const int MAX = 50;
int N, M;
int arr[MAX][MAX];
int maxSquare(void)
{
int result = 1;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
for (int k = 1; k < min(N, M); k++)
{
//범위 내에 있고 각 꼭지점들이 같은 숫자라면
if (i + k < N && j + k < M && arr[i + k][j] == arr[i][j] && arr[i + k][j + k] == arr[i][j] && arr[i][j + k] == arr[i][j])
result = max(result, k + 1);
}
}
}
return result * result;
}
int main(void)
{
cin >> N >> M;
for (int i = 0; i < N; i++)
{
string temp;
cin >> temp;
for (int j = 0; j < M; j++)
arr[i][j] = temp[j] - '0';
}
cout << maxSquare() << endl;
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 6549번 히스토그램에서 가장 큰 직사각형 (2) | 2018.07.16 |
---|---|
백준 14867번 물통 (0) | 2018.07.15 |
백준 10266번 시계 사진들 (0) | 2018.07.14 |
백준 2357번 최소값과 최대값 (0) | 2018.07.14 |
백준 14939번 불 끄기 (0) | 2018.07.13 |