반갑습니다!

[백준] 1051숫자 정사각형 본문

알고리즘 문제 풀이

[백준] 1051숫자 정사각형

김덜덜이 2020. 10. 7. 12:28

풀이

완전 탐색으로 모든 경우를 확인해보면 된다. 가장 큰 정사각형을 찾아야하므로 변의 길이를 큰 것부터 찾아줬다.

코드

C++

#include <iostream>
using namespace std;

int n, m;
int board[50][50];

int main() {
    scanf("%d %d", &n, &m);
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            scanf("%1d", &board[i][j]);    

    int size = n < m ? n : m;
    int answer = 0;
    bool flag = false;
    for (int s = size - 1; s >= 0; s--) {
        for (int i = 0; i < n - s; i++) {
            for (int j = 0; j < m - s; j++) {                
                if (board[i][j] == board[i + s][j] && board[i][j] == board[i][j + s] && board[i][j] == board[i + s][j + s]) {
                    answer = s + 1;
                    flag = true;
                    break;
                }
            }
            if (flag) break;
        }
        if (flag) break;
    }
    cout << answer * answer << '\n';
    return 0;
}

'알고리즘 문제 풀이' 카테고리의 다른 글

[백준] 2056 작업  (0) 2020.10.08
[백준] 1948 임계 도로  (0) 2020.10.08
[백준] 1834 나머지와 몫이 같은 수  (0) 2020.10.07
[백준] 3665 최종 순위  (0) 2020.10.06
[백준] 2887 행성 터널  (0) 2020.10.06