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;
}
}
To embed this project on your website, copy the following code and paste it into your website's HTML: