가장 큰 정사각형 찾기(Lv2)

108번뇌·2021년 3월 7일
0


이문제 못풀었음.
DP 할 때 이전 단계가 이후 단계도 영향을 미치면서 점화식을 쓸 수 있을때 사용한다.

#include <iostream>
#include<vector>
#include <algorithm>
using namespace std;

int solution(vector<vector<int>> board)
{
    int answer = board[0][0];
    int iTemp;
    for(int i=1; i<board.size(); i++)
    {
        for(int j=1; j<board[0].size(); j++)
        {
            if(board[i][j]!=0)
            {
                board[i][j] = min(board[i][j-1], board[i-1][j]);
                board[i][j] = min(board[i][j], board[i-1][j-1])+1;
                answer = max(answer, board[i][j]);
            }
        }
    }

    return answer*answer;
}

answer = 0; 을 하면 1경우 case나가는데, [0][0]해줘야 한다.
[점화식 관계]

board[i][j] = min(board[i][j-1], board[i-1][j]);
board[i][j] = min(board[i][j], board[i-1][j-1])+1;
3방향에서 제일 제일 작은거 +1해주는것이 핵심이다.

profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글

관련 채용 정보