using namespace std;
int solution(vector> board){
int maxi = 0;
if(board[0].size() <= 1 || board.size() <= 1){
for(int i = 0; i < board[0].size(); i++){
for(int j = 0; j < board.size(); j++){
maxi = max(maxi, board[j][i]);
}
}
}
for(int i = 0; i < board[0].size() - 1; i++){
for(int j = 0; j < board.size() - 1; j++){
if(board[j][i] >= 1 && board[j + 1][i] >= 1 && board[j][i + 1] >= 1 && board[j + 1][i + 1] >= 1){
board[j + 1][i + 1] = min({board[j][i], board[j + 1][i], board[j][i + 1]}) + 1;
if(maxi < board[j + 1][i + 1]) maxi = board[j + 1][i + 1];
}
}
}
return maxi * maxi;
}
저는 좌측 상단부터 오른쪽 상단으로 정사각형을 체크해봤는데요... 테스트케이스 6번만 통과하지 못하네요 ㅠㅠ..
테스트 케이스 6번은 구현하신 프로그램으로 해결하면 maxi값이 0이 나올텐데 [[1,0],[0,0]] 으로 생각하시면 답은 1이 됩니다. 기본 maxi 값을 1로 설정하시면 해결 할 수 있습니당 물론 이 경우에 8번 케이스가 실패할텐데 8번은 전부다 0인 케이스이니 잘 해결하시기 바랍니당