2x2 정사각형을 찾는다면 주변값에서 가장 작은 값+1로 자신의 값을 갱신하여 구하는 방식이다. 방식을 알면 어렵지않다
#include <vector>
using namespace std;
int solution(vector<vector<int>> board) {
int answer = board[0][0], row = board.size(), col = board[0].size();// 1x1배열일 때 예외 처리떄문에 answer 초기값 설정
for (int i=1; i<row; i++) {
for (int j=1; j<col; j++) {
if (board[i][j] ) {// 0이 아니라면
board[i][j] = min(min(board[i-1][j], board[i][j-1]), board[i-1][j-1]) + 1;// 주변값중 가장 작은값 + 1
answer = max(answer, board[i][j]);// 가장 큰 값 저장
}
}
}
return answer*answer;
}
이해하기 쉽게 예시를 들자면
0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 와 같은 배열이 들어오면 다음과 같은 결과로 나온다.
0 1 1 1 1 1 2 2 1 2 2 3 0 0 1 0 이중 가장 큰 값을 리턴해 주면 되는 것이다.