알고리즘/BOJ

백준 1051번 숫자 정사각형

꾸준함. 2018. 7. 14. 15:12

문제 링크입니다: 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