최대 1 분 소요



https://www.acmicpc.net/problem/1051



🔍 문제 풀이

문제 도식화

assets/images/2024/1051.jpg


💻 코드

import java.io.*;
import java.util.*;

public class Main {
    static int[][] arr;
    static int n, m;

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());
        n = Integer.parseInt(st.nextToken());
        m = Integer.parseInt(st.nextToken());

        arr = new int[n][m];
        for(int i=0; i<n; i++){
            String line = br.readLine();
            for(int j = 0; j<m; j++){
                arr[i][j] = line.charAt(j) - '0';
            }
        }

        int ans = solve();
        System.out.println(ans * ans);
    }

    static int solve() {
        int maxSide = Math.min(n, m);

        while(maxSide > 0){
            for (int i = 0; i <= n - maxSide; i++) {
                for (int j = 0; j <= m - maxSide; j++) {
                    int topLeft = arr[i][j];
                    int topRight = arr[i][j + maxSide - 1];
                    int bottomLeft = arr[i + maxSide - 1][j];
                    int bottomRight = arr[i + maxSide - 1][j + maxSide - 1];

                    if (topLeft == topRight && topLeft == bottomLeft && topLeft == bottomRight) {
                        return maxSide;
                    }
                }
            }
            maxSide--;
        }

        return 0;
    }
}


카테고리:

업데이트:

댓글남기기