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

// The main method must be in a class named "Main".
class Main {
    public static void main(String[] args) {
        int[] mats = {5, 3, 2};
        String[][] park =
            {{"A", "A", "-1", "B", "B", "B", "B", "-1"},
            {"A", "A", "-1", "B", "B", "B", "B", "-1"},
            {"-1", "-1", "-1", "-1", "-1", "-1", "-1", "-1"},
            {"D", "D", "-1", "-1", "-1", "-1", "E", "-1"},
            {"D", "D", "-1", "-1", "-1", "-1", "-1", "F"},
            {"D", "D", "-1", "-1", "-1", "-1", "E", "-1"}};
        
        int[] mats_1 = {3};
        String[][] park_1 =
            {{"-1", "-1", "-1"},
            {"A", "-1", "-1"},
            {"-1", "-1", "-1"},
            {"-1", "-1", "-1"},
            {"-1", "B", "B"}};
        
        System.out.println(solution(mats, park));
        //System.out.println(solution(mats_1, park_1));
    }
    public static int solution(int[] mats, String[][] park) {
        int rows = park.length;
        int cols = park[0].length;
        
        Integer[] arr = Arrays.stream(mats).boxed().toArray(Integer[]::new);
        Arrays.sort(arr, Collections.reverseOrder());
        
        for (int mat : arr) {
            for (int i = 0; i <= rows - mat; i++) {
                for (int j = 0; j <= cols - mat; j++) {
                    
                    // 문자열을 효율적으로 합치기 위해 StringBuilder 사용
                    StringBuilder sb = new StringBuilder();
                    StringBuilder sb_ = new StringBuilder();
                    
                    // 3. 시작점 (i, j)로부터 mat x mat 크기만큼 문자 추출
                    for (int x = 0; x < mat; x++) {
                        for (int y = 0; y < mat; y++) {
                            sb.append(park[i + x][j + y]);
                            sb_.append("-1");
                        }
                    }
                    
                    if(sb.toString().equals(sb_.toString())){
                        System.out.print(sb+"\n"+sb_+"\n\n");
                        return mat;
                    }
                    // 결과 출력 (시작 좌표와 추출된 문자열)
                    //System.out.println("시작점 (" + i + "," + j + ") -> " + sb.toString());
                }
            }
        }
        return -1;
    }
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: