class Solution
{
public static int solution(int[][] board) {
int rowCol = Math.min(board.length, board[0].length); // 가로 세로 중 작은 것.
int answer = 0;
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[0].length; j++) {
// 일단 1이어야 하고
if (board[i][j] != 1) {
continue;
}
for (int k = 1; k < rowCol; k++) {
if (i + k > board.length - 1 || j + k > board[0].length - 1) {
break;
}
boolean notOne = false;
// k사이즈만큼 전체 1인지 확인
for (int a = i; a < i + k; a++) {
for (int b = j; b < j + k; b++) {
if (board[a][b] != 1) {
notOne = true;
break;
}
}
if (notOne) {
break;
}
}
answer = Math.max(answer, k * k); // 둘중 최대값
}
}
}
return answer;
}
}