#include #include#include using namespace std;int solution(vector> board){ int answer = 0; for(int i=1; i 현재 값을 기준으로 직전 3가지 값을 체크한다 (board[i-1][j-1], board[i-1][j], board[i][j-1])해당 3가지 값들의 최소값을 기준으로 + 1한 값을 현재 위치에 저장해준다.이는 모든 값이 1로 이루어진 정사각형 여부를 판별하는 것이다.만약 하나라도 0인 값이 존재하면 0+1로 1을 그대로 유지하게 된다. 이를 누적하여 더하며 이어진 정사각형 크기를 판별하고, 이렇게 저장한 값은 한 변의 길이가 된다.따라서 최종 출력은 제곱을 하여야한다.
#include #include #include #include using namespace std;int dy[] = {0, 0, 1, -1};int dx[] = {1, -1, 0, 0};bool bfs(int y, int x, vectorv){ vector> visited(5, vector(5, false)); queue> q; q.push({y, x, 0}); visited[y][x] = 1; while(!q.empty()) { auto [yy, xx, dist] = q.front(); q.pop(); if(dist == 2) continue; //맨해튼 거리 2이내만 탐색 for(..