코딩테스트 연습

[python/C++] 가장 큰 정사각형 찾기 / 동적 프로그래밍(DP)

콩콩(๓° ˘ °๓)♡ 2023. 3. 11. 01:42

가장 큰 정사각형 찾기 : 동적 프로그래밍(dp)

#include<vector>
using namespace std;

int dp[1001][1001]={0};
int solution(vector<vector<int>> board)
{
	int ans=0;
    int row = board.size();
    int col = board[0].size();
    for(int i = 1; i <= row; ++i)
    	for(int j = 1; j <= col; ++j)
        	if(board[i-1][j-1] != 0 ){
            	dp[i][j] = min(dp[i][j-1], min(dp[i-1][j], dp[i-1][j-1])) + 1;
                ans = max(ans, dp[i][j]);
            }
    return ans*ans;
}

 

def solution(board):
    n = len(board)
    m = len(board[0])

    # dp 준비
    dp = [[0]*m for _ in range(n)]
    dp[0] = board[0]
    for i in range(1,n):
        dp[i][0] = board[i][0]
    
    # 2중 for문으로 연산
    for i in range(1, n):
        for j in range(1, m):
            if board[i][j] == 1:
                dp[i][j] = min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1]) + 1
    
    # 최대 넓이 구하기
    answer = 0
    for i in range(n):
        temp = max(dp[i])
        answer = max(answer, temp)
    
    return answer**2

 

 

[Python] 동적 계획법(DP: Dynamic Programming)

동적 계획법(DP: Dynamic Programming) 동적 계획법(DP: Dynamic Programming) 불필요한 연산을 줄이고, 최적의 답안을 구하는 알고리즘 동적 계획법의 등장 배경 ① 배낭 문제(Knapsack Problem) 무게와 가격이 다

starrykss.tistory.com

 

 

[Python] Dynamic Programming(동적계획법) 알고리즘

🔊 이번 포스팅에는 최근에 Python으로 알고리즘을 공부하기 시작하면서 알게 된 여러 알고리즘의 원리와 Python으로 구현하는 방법에 대해 소개해보려 한다. 필자는 최근 알고리즘 공부를 '나동

techblog-history-younghunjo1.tistory.com

https://catnap-jo.tistory.com/111

 

DP - 점화식의 중요성(BOJ 11052, 16194)

요새 다이나믹 프로그래밍(Dynamic Programming)을 공부 중인데, 한 번 새로운 깨달음을 얻을 때마다 문제가 슝슝 풀리는 게 기분이 좋다. 강의를 들으면서, 종만북에서 얻지 못할 좋은 사고의 흐름을

catnap-jo.tistory.com