가장 큰 정사각형 찾기 : 동적 프로그래밍(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
'코딩테스트 연습' 카테고리의 다른 글
[파이썬] 프로그래머스: 삼총사 / 조합 (0) | 2023.03.20 |
---|---|
[알고리즘]DFS, BFS 연습문제 (0) | 2023.03.15 |
[파이썬] 프로그래머스: 문자열 나누기 (0) | 2023.02.23 |
[파이썬] 백준: 문자열 연습문제 (0) | 2023.01.30 |
[파이썬] 백준: 1차원 배열 연습문제 (0) | 2023.01.24 |