- ๋ค์ต์คํธ๋ผ
- ์นด์นด์ค ์ฝํ
- LCs
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ
- ๋ฐฑ์๋ ํ๋ฆฌ์จ๋ณด๋ฉ
- Python
- ๋์ ํ๋ก๊ทธ๋๋ฐ
- ์ฌ๊ท
- golang
- ์์ฝ๋
- go
- C++
- DFS
- ๋นํธ๋งต
- Union-Find
- ํ๋ฆฌ์จ๋ณด๋ฉ
- DP
- ์ด๋ถํ์
- ์น๋ฆฐ์ด
- ๋นํธ๋ง์คํน
- nestjs
- ํธ๋ฆฌ
- js
- BFS
- ์๊ณ ๋ฆฌ์ฆ
- ๊ฐ์ฅ๊ฐ๊น์ด๊ณตํต์กฐ์
- ๋ฐฑ์ค
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ํฐ๋
- ์นด์นด์ค2021
- Today
- Total
Hello Ocean! ๐ผ
[๋ฐฑ์ค/C++] 1915. ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ ๋ณธ๋ฌธ
๋ฌธ์
๋ฐฐ์ด์์ 1๋ก ๋ ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ์ ํฌ๊ธฐ๋ฅผ ๊ตฌํด๋ผ!
ํ์ด
DP๋ฅผ ์ด์ฉํ๊ฒ ๋ค!
cache[r][c] = min(min(cache[r + 1][c], cache[r + 1][c + 1]), cache[r][c + 1])+1;
cache๋ฐฐ์ด์์ ์ ์ผ ์๋ ํ, ์ค๋ฅธ์ชฝ ์ด์ table๊ณผ ๋๊ฐ์ด ์ฑ์์ค๋ค.
๊ทธ ํ์ ๋ฐ๋ณต๋ฌธ์ ๋๋ฉด์, table๊ฐ์ด 0์ด๋ฉด 0์ผ๋ก ์ฑ์ฐ๊ณ ๋์ด๊ฐ๊ณ ,
0์ด ์๋๋ฉด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด cache[r + 1][c], cache[r + 1][c + 1], cache[r][c + 1]๊ฐ๋ค ์ค์ ์ต์๊ฐ +1์ ์ฑ์ฐ๋ฉด ๋๋ค.
์์ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ cache๋ฐฐ์ด์ ๋ชจ๋ ์ฑ์ฐ๋ฉด ๋งจ ์ค๋ฅธ์ชฝ๊ณผ ๊ฐ๋ค
์ฝ๋
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int cache[1000][1000];
int table[1000][1000];
int main(void) {
int n, m;
cin >> n >> m;
int maxS = 0;
for (int i = 0;i < n;i++) {
string s;
cin >> s;
for (int j = 0;j < m;j++) {
table[i][j] = s[j] - '0';
}
}
for (int r = 0;r < n;r++) {
cache[r][m - 1] = table[r][m - 1];
maxS = max(maxS, cache[r][m - 1]);
}
for (int c = 0;c < m;c++) {
cache[n - 1][c] = table[n - 1][c];
maxS = max(maxS, cache[n - 1][c]);
}
for (int r = n - 2;r >= 0;r--) {
for (int c = m - 2;c >= 0;c--) {
if (table[r][c] == 0)
cache[r][c] = 0;
else {
cache[r][c] = min(min(cache[r + 1][c], cache[r + 1][c + 1]), cache[r][c + 1])+1;
maxS = max(maxS, cache[r][c]);
}
}
}
cout << maxS*maxS << endl;
return 0;
}
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค์ด๋ ค๊ณ ๋ ธ๋ ฅํด๋ณธ ์ฝ๋
- cache ๋ฐฐ์ด ์์ ๊ณ , table์ ๊ทธ๋๋ก ์ฌ์ฉ
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int table[1000][1000];
int main(void) {
int n, m;
cin >> n >> m;
int maxS = 0;
for (int i = 0;i < n;i++) {
string s;
cin >> s;
for (int j = 0;j < m;j++) {
table[i][j] = s[j] - '0';
if (table[i][j] == 1)
maxS = 1;
}
}
for (int r = n - 2;r >= 0;r--) {
for (int c = m - 2;c >= 0;c--) {
if (table[r][c] == 0)
continue;
else {
table[r][c] = min(min(table[r + 1][c], table[r + 1][c + 1]), table[r][c + 1])+1;
maxS = max(maxS, table[r][c]);
}
}
}
cout << maxS*maxS << endl;
return 0;
}
๊ฒฐ๊ณผ
๋๋๊ฒ๋ ์๊ฐ์ ์ ํ ์ค์ด๋ค์ง ์์๋ค!
ํฌ๊ธฐ๊ฐ ํฐ ๋ฐฐ์ด์ ์ ์ธํ ๋๋, main ํจ์ ๋ฐ๊นฅ์ ์ ์ญ์ผ๋ก ์ ์ธํด์ผ ์ค๋ฅ๊ฐ ๋์ง ์๋๋ค
(mainํจ์ ๋ด๋ถ์ ์ ์ธํ๋๋ ์ฝ๋๊ฐ ์คํ์ค์ ๊บผ์ง๋ ํ์ ๋ฐ์)
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/C++] 1987. ์ํ๋ฒณ (0) | 2021.05.04 |
---|---|
[๋ฐฑ์ค/C++] 1238. ํํฐ (0) | 2021.04.28 |
[๋ฐฑ์ค/C++] 1916. ์ต์๋น์ฉ ๊ตฌํ๊ธฐ (0) | 2021.04.14 |
[๋ฐฑ์ค/C++] 1937. ์์ฌ์์ด ํ๋ค (0) | 2021.04.06 |
[๋ฐฑ์ค/C++] 1753. ์ต๋จ๊ฒฝ๋ก (0) | 2021.04.06 |