문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12905
C++ 풀이
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> g_board;
int max_size;
void check_near_board(int i, int j) {
int min_num = g_board[i - 1][j - 1];
if (g_board[i - 1][j] < min_num)
min_num = g_board[i - 1][j];
if (g_board[i][j - 1] < min_num)
min_num = g_board[i][j - 1];
g_board[i][j] *= (min_num + 1);
if (max_size < g_board[i][j])
max_size = g_board[i][j];
}
int solution(vector<vector<int>> board)
{
max_size = 0;
g_board = board;
if (board.size() <= 1) {
for (int i = 0; i < board[0].size(); i++) {
if (board[0][i] == 1)
return 1;
}
return 0;
}
for (int i = 1; i < board.size(); i++) {
for (int j = 1; j < board[i].size(); j++) {
check_near_board(i, j);
}
}
return max_size * max_size;
}
동적 계획법(Dynamic Programming) 활용
반응형
'알고리즘 · 코딩' 카테고리의 다른 글
[SWEA 4406] 모음이 보이지 않는 사람 (0) | 2020.05.26 |
---|---|
[프로그래머스] 모의고사 (0) | 2020.05.25 |
[프로그래머스] 짝지어 제거하기 (0) | 2020.05.19 |
[프로그래머스] 땅따먹기 (0) | 2020.05.13 |
[프로그래머스] 더 맵게 (0) | 2020.05.12 |