- ์นด์นด์ค2021
- golang
- ์ฌ๊ท
- js
- DP
- ์ํฐ๋
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ
- nestjs
- ์๊ณ ๋ฆฌ์ฆ
- ๋ฐฑ์ค
- ์์ฝ๋
- C++
- ํ๋ฆฌ์จ๋ณด๋ฉ
- Union-Find
- ๋ค์ต์คํธ๋ผ
- ๋นํธ๋งต
- BFS
- ์นด์นด์ค ์ฝํ
- go
- ๋์ ํ๋ก๊ทธ๋๋ฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์น๋ฆฐ์ด
- LCs
- Python
- ๋นํธ๋ง์คํน
- ์ด๋ถํ์
- ๊ฐ์ฅ๊ฐ๊น์ด๊ณตํต์กฐ์
- DFS
- ๋ฐฑ์๋ ํ๋ฆฌ์จ๋ณด๋ฉ
- ํธ๋ฆฌ
- Today
- Total
Hello Ocean! ๐ผ
[๋ฐฑ์ค/C++] 1987. ์ํ๋ฒณ ๋ณธ๋ฌธ
๋ฌธ์
์ธ๋ก R์นธ, ๊ฐ๋ก C์นธ์ผ๋ก ๋ ํ ๋ชจ์์ ๋ณด๋๊ฐ ์๋ค. ๋ณด๋์ ๊ฐ ์นธ์๋ ๋๋ฌธ์ ์ํ๋ฒณ์ด ํ๋์ฉ ์ ํ ์๊ณ , ์ข์ธก ์๋จ ์นธ (1ํ 1์ด) ์๋ ๋ง์ด ๋์ฌ ์๋ค.
๋ง์ ์ํ์ข์ฐ๋ก ์ธ์ ํ ๋ค ์นธ ์ค์ ํ ์นธ์ผ๋ก ์ด๋ํ ์ ์๋๋ฐ, ์๋ก ์ด๋ํ ์นธ์ ์ ํ ์๋ ์ํ๋ฒณ์ ์ง๊ธ๊น์ง ์ง๋์จ ๋ชจ๋ ์นธ์ ์ ํ ์๋ ์ํ๋ฒณ๊ณผ๋ ๋ฌ๋ผ์ผ ํ๋ค. ์ฆ, ๊ฐ์ ์ํ๋ฒณ์ด ์ ํ ์นธ์ ๋ ๋ฒ ์ง๋ ์ ์๋ค.
์ข์ธก ์๋จ์์ ์์ํด์, ๋ง์ด ์ต๋ํ ๋ช ์นธ์ ์ง๋ ์ ์๋์ง๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋ง์ด ์ง๋๋ ์นธ์ ์ข์ธก ์๋จ์ ์นธ๋ ํฌํจ๋๋ค.
ํ์ด
DFS๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค!
๋ณดํต DFS๋ฅผ ์ด์ฉํ ๋, ์ ์ฒด table๊ณผ ๊ฐ์ ํฌ๊ธฐ์ visited ๋ฐฐ์ด์ ๋ง๋ค์ด์ ํด๋น ์นธ์ ๋ฐฉ๋ฌธํ๋์ง๋ฅผ ํ์ธํ์ง๋ง, ์ด๋ฒ ๋ฌธ์ ์์๋ ์ํ๋ฒณ ํฌ๊ธฐ์ visited ๋ฐฐ์ด์ ๋ง๋ค์ด์, ํด๋น ์ํ๋ฒณ์ด ์ฐ์ฌ์๋ ์นธ์ ๋ฐฉ๋ฌธํ๋์ง๋ฅผ ๊ฒ์ฌํ๋ฉด ๋๋ ๋ฌธ์ ์๋ค.
์ฝ๋
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int R, C;
char table[21][21];
int dc[4] = { -1,0,1,0 };
int dr[4] = { 0,-1,0,1 };
int maxCount = 1; //์์์ ์ ๋ฌด์กฐ๊ฑด ์ง๋๋ ๊ฒ์ผ๋ก ํ๊ธฐ๋๋ฌธ์ 1๋ก ์ด๊ธฐํ
int cnt = 1;
void DFS(bool visited[], int r, int c) {
char temp = table[r][c];
visited[temp - 'A'] = true;
for (int i = 0;i < 4;i++) {
int new_c = c + dc[i];
int new_r = r + dr[i];
if (-1 < new_c && -1 < new_r && C > new_c && R > new_r) {
char next = table[new_r][new_c];
if (!visited[next - 'A']) { //์ง๋๊ฐ ์ ์ด ์๋ ์ํ๋ฒณ์ด๋ฉด!
maxCount = max(maxCount, ++cnt);
DFS(visited, new_r, new_c);
--cnt;
}
}
}
visited[temp - 'A'] = false;
}
int main(void) {
cin >> R >> C;
for (int r = 0;r < R;r++) {
for (int c = 0;c < C;c++) {
cin >> table[r][c];
}
}
bool visited[26] = { 0, };
DFS(visited, 0, 0);
cout << maxCount << endl;
return 0;
}
๊ฒฐ๊ณผ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/C++] 2206. ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ (0) | 2021.05.12 |
---|---|
[๋ฐฑ์ค/C++] 16236.์๊ธฐ์์ด (0) | 2021.05.04 |
[๋ฐฑ์ค/C++] 1238. ํํฐ (0) | 2021.04.28 |
[๋ฐฑ์ค/C++] 1915. ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ (0) | 2021.04.14 |
[๋ฐฑ์ค/C++] 1916. ์ต์๋น์ฉ ๊ตฌํ๊ธฐ (0) | 2021.04.14 |