๋์ด๋ : ๊ณจ๋ 5
๊ฑธ๋ฆฐ ์๊ฐ : 1์๊ฐ 20๋ถ
๋ฌธ์
๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ ๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ
n×m์ 0, 1๋ก ๋ ๋ฐฐ์ด์ด ์๋ค. ์ด ๋ฐฐ์ด์์ 1๋ก ๋ ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ์ ํฌ๊ธฐ๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
0 | 1 | 0 | 0 |
---|---|---|---|
0 | 1 | 1 | 1 |
1 | 1 | 1 | 0 |
0 | 0 | 1 | 0 |
์์ ๊ฐ์ ์์ ์์๋ ๊ฐ์ด๋ฐ์ 2×2 ๋ฐฐ์ด์ด ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ์ด๋ค.
ํ์ด
- ์์ ๋ฌธ์ : ํ์ฌ ์์น์์ ์ค๋ฅธ์ชฝ๊ณผ ์๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ง ์ ์๋ ์ ์ฌ๊ฐํ์ ์ต๋ ํฌ๊ธฐ
- ์ฌ๊ท์
- ํด๋น ์์น์์ ๋ํ๋ ์ ์๋ ์ต๋ ํฌ๊ธฐ ์ ์ฌ๊ฐํ์ ํ ๋ณ์ Area(row, col)์ด๋ผ๊ณ ํ๋ค๋ฉด
- Area(row, col) = min(Area(row+1,col)+1, Area(row,col+1)+1, Area(row+1,col+1)+1)
- ์กฐ๊ฑด
- ๋ฒฝ์ ๋ถ์ด์์ผ๋ฉด Area๊ฐ 1
- ๊ฐ์ด 0์ด๋ฉด Area๊ฐ 0
์ฝ๋
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
int n, m;
int arr[1001][1001];
int memo[1001][1001]; // ์ ์ฌ๊ฐ๊ธธ์ด ์ ์ฅ
int maxNum = 0;
int area(int row, int col) {
if (memo[row][col] != -1) // ๋ฉ๋ชจ์ด์ ์ด์
return memo[row][col];
if (arr[row][col] == 0) { // ๊ฐ์ด 0์ด๋ฉด 0
memo[row][col] = 0;
return memo[row][col];
}
if (row == n - 1 && col == m - 1) { // ๋ฒฝ์ ๋ถ์ด์์ผ๋ฉด 1
memo[row][col] = 1;
return memo[row][col];
}
int nextRow, nextCol, nextDiag;
nextRow = area(row, col + 1) + 1;
nextCol = area(row + 1, col) + 1;
nextDiag = area(row + 1, col + 1) + 1;
memo[row][col] = min(min(nextRow, nextCol), nextDiag);
return memo[row][col];
}
int main() {
// ์
๋ ฅ
cin >> n >> m;
for (int i = 0; i < n; i++) {
string str;
cin >> str;
for (int j = 0; j < m; j++) {
arr[i][j] = str[j] - '0';
}
}
// ์ด๊ธฐํ
memset(memo, -1, sizeof(memo));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
int res = area(i, j);
if (res > maxNum)
maxNum = res;
}
}
cout << maxNum * maxNum;
}
<arr ๋ฐฐ์ด>
<memo ๋ฐฐ์ด>
memo ๋ฐฐ์ด ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ์ ๊ณฑ์ ์ถ๋ ฅ
๊ฒฐ๊ณผ
๋ค๋ฅธ ์ฌ๋์ ํ์ด
๋ฒฝ์ ๋ถ์ด์๋ ๊ฐ์ ๋ฏธ๋ฆฌ memo ๋ฐฐ์ด์ ๋ฃ์ด๋๊ณ , ์ฌ๊ท์์ ์ด์ฉํ์ฌ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๊ตฌ์ฑํ๋ฉด ์๊ฐ์ ๋ ์ค์ผ ์ ์๋ค.
๋ฐ์ํ
'Algorithm ๋ฌธ์ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[c++] BOJ 1238 :: ํํฐ (0) | 2021.04.21 |
---|---|
[c++] BOJ 1916 :: ์ต์๋น์ฉ ๊ตฌํ๊ธฐ (0) | 2021.04.12 |
[c++] BOJ 1947 :: ์์ฌ์์ด ํ๋ค (0) | 2021.04.06 |
[c++] BOJ 1753 :: ์ต๋จ๊ฒฝ๋ก (0) | 2021.04.06 |
[c++] BOJ 1005 :: ACM Craft (0) | 2021.03.21 |
Comment