๐ป
[๋ฐฑ์ค] DFS์BFS - 2667. ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ(DFSํ์ด) ๋ณธ๋ฌธ
[๋ฐฑ์ค] DFS์BFS - 2667. ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ(DFSํ์ด)
๋ํจ๋ 2020. 2. 20. 11:11๋ฌธ์
<๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ์ ์ฌ๊ฐํ ๋ชจ์์ ์ง๋๊ฐ ์๋ค. 1์ ์ง์ด ์๋ ๊ณณ์, 0์ ์ง์ด ์๋ ๊ณณ์ ๋ํ๋ธ๋ค. ์ฒ ์๋ ์ด ์ง๋๋ฅผ ๊ฐ์ง๊ณ ์ฐ๊ฒฐ๋ ์ง๋ค์ ๋ชจ์์ธ ๋จ์ง๋ฅผ ์ ์ํ๊ณ , ๋จ์ง์ ๋ฒํธ๋ฅผ ๋ถ์ด๋ ค ํ๋ค. ์ฌ๊ธฐ์ ์ฐ๊ฒฐ๋์๋ค๋ ๊ฒ์ ์ด๋ค ์ง์ด ์ข์ฐ, ํน์ ์๋์๋ก ๋ค๋ฅธ ์ง์ด ์๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค. ๋๊ฐ์ ์์ ์ง์ด ์๋ ๊ฒฝ์ฐ๋ ์ฐ๊ฒฐ๋ ๊ฒ์ด ์๋๋ค. <๊ทธ๋ฆผ 2>๋ <๊ทธ๋ฆผ 1>์ ๋จ์ง๋ณ๋ก ๋ฒํธ๋ฅผ ๋ถ์ธ ๊ฒ์ด๋ค. ์ง๋๋ฅผ ์ ๋ ฅํ์ฌ ๋จ์ง์๋ฅผ ์ถ๋ ฅํ๊ณ , ๊ฐ ๋จ์ง์ ์ํ๋ ์ง์ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์๋ ์ง๋์ ํฌ๊ธฐ N(์ ์ฌ๊ฐํ์ด๋ฏ๋ก ๊ฐ๋ก์ ์ธ๋ก์ ํฌ๊ธฐ๋ ๊ฐ์ผ๋ฉฐ 5≤N≤25)์ด ์ ๋ ฅ๋๊ณ , ๊ทธ ๋ค์ N์ค์๋ ๊ฐ๊ฐ N๊ฐ์ ์๋ฃ(0ํน์ 1)๊ฐ ์ ๋ ฅ๋๋ค.
์ถ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์๋ ์ด ๋จ์ง์๋ฅผ ์ถ๋ ฅํ์์ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ ๋จ์ง๋ด ์ง์ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ํ ์ค์ ํ๋์ฉ ์ถ๋ ฅํ์์ค.
์์ ์ ๋ ฅ1
7
0110100
0110101
1110101
0000111
0100000
0111110
0111000
์์ ์ถ๋ ฅ1
3
7
8
9
์๊ฐ
์ฌ๋ฌ๋ฒ ์๋ฌด๋ฆฌ ์ฝ๋๋ฅผ ๋ณด๊ณ ๋ ๋ด๋ ํ๋ ธ์ต๋๋ค ๋ผ๊ณ ๋์ค๊ธธ๋ ๊ตฌ๊ธ๋ง ํด๋ดค๋๋
ios::sync_with_stdio(false); ๋ฌธ์ ์ด์ฉํ๋ฉด,
cin, cout๊ณผ printf, scanf ๋ฅผ ํผ์ฉํ ์ ์๋ค.
[์ถ์ฒ] ๋ฐฑ์ค 2667๋ฒ : ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ(C++)|์์ฑ์ archSlave
๋ผ๊ณ ๋์๋ค. ์ธ์์๋!
์ต๊ด์ ์ผ๋ก cin์ ์ฐ๋ค๊ฐ ์คํํ๋๋ ์ด์ํ๊ธธ๋ ๋ดค๋๋ ์ ๋ ฅํ ๋ ํ์๋ฆฌ์ฉ ์ ๋ ฅ๋ฐ์์ด์ผ ํ๋ค. ๊ทธ๋์ scanf๋ฅผ ์ฌ์ฉํ๋ ๊ฑฐ์๋๋ฐ...
๊ฐ์ด ํผ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์ฒ์ ์์๋ค... ํ ์๊ทธ๋ฐ๊ฐ ๊ถ๊ธํ์ฌ ์ข ๋ ์ฐพ์๋ณด๋
ios::sync_with_stdio๋ cpp์ iostream์ c์ stdio์ ๋๊ธฐํ์์ผ์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ธ true์ผ ๋๋ cout << "HI"; printf("BYE"); cout<<"hi" ๊ฐ ์์๋๋ก ์ถ๋ ฅ๋์ง๋ง, false์ผ๋๋ ์ด๋ค ์์๋ก ์ถ๋ ฅ๋ ์ง ์ ์๊ฐ ์์ฃ .
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ios::sync_with_stdio(false); ๋ฅผ ์ถ๊ฐํ์๋ฉด,
iostream ํจ์์ธ cin/ cout์ stdio ํจ์์ธ getchar()์ ๊ฐ์ด ์ฐ์๋ฉด ์๋ฉ๋๋ค.
[์ถ์ฒ] https://www.acmicpc.net/board/view/8074
๋์ ๋๊ฐ์ ํธ๊ธฐ์ฌ์ผ๋ก ๊ธ์ ์ฌ๋ฆฐ ์ฌ๋์ด ์์๊ณ ์ด์ ๊ฐ์ ๋ต๋ณ์ด ๋ฌ๋ ค์์๋ค.
์ฐ๋ฉด ์๋๋ ๊ตฌ๋...! ๋ค์ ๋ถํฐ ์กฐ์ฌํด์ผ๊ฒ ๋ค + ์ ๋ ฅ ์์ ์ ๋ณด๊ณ cin์ ์ฌ์ฉํด๋ ๋๋ ์ง ์๋์ง ๊ผญ ํ์ธํ ๊ฒ!
์์ฑํ ์ฝ๋
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#define MAX 30
using namespace std;
int n;
int map[MAX][MAX];
bool visited[MAX][MAX];
// ์, ํ, ์ข, ์ฐ
int dx[] = { -1, 1, 0, 0};
int dy[] = { 0, 0, -1, 1};
int cnt; // ๋จ์ง ๊ฐฏ์
vector<int> v; // ์ง ๊ฐฏ์
void dfs(int x, int y){
cnt ++;
visited[x][y] = true;
for(int i=0; i<4; i++){
int nx = x+dx[i];
int ny = y+dy[i];
if(nx < 0 || ny < 0 || nx >= n || ny >= n)
continue;
if(map[nx][ny] == 1 && !visited[nx][ny]){
dfs(nx, ny);
}
}
}
int main(int argc, const char * argv[]) {
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
scanf("%d", &n);
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
scanf("%1d", &map[i][j]);
}
}
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
if(map[i][j] == 1 && !visited[i][j]){
cnt = 0;
dfs(i,j);
v.push_back(cnt);
}
}
}
sort(v.begin(), v.end());
printf("%ld\n", v.size());
for(int i=0; i<v.size(); i++){
printf("%d\n", v[i]);
}
return 0;
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ํ์ด Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] ๋ฐฑํธ๋ํน - 1182. ๋ถ๋ถ์์ด์ ํฉ (0) | 2020.02.21 |
---|---|
[๋ฐฑ์ค] ๋์ ๊ณํ๋ฒ - 1753. ์ต๋จ๊ฒฝ๋ก(๋ฌธ์ ํธ๋์ค) (0) | 2020.02.20 |
[๋ฐฑ์ค] ๋ถํ ์ ๋ณต - 2630. ์์ข ์ด ๋ง๋ค๊ธฐ (0) | 2020.02.20 |
[๋ฐฑ์ค] ๋์ ๊ณํ๋ฒ - 9461. ํ๋๋ฐ ์์ด (0) | 2020.02.20 |
[๋ฐฑ์ค] ์ฐ์ ์์ ํ - 1927. ์ต์ ํ (0) | 2020.02.19 |