728x90
https://softeer.ai/practice/info.do?idx=1&eid=409&sw_prbl_sbms_sn=203120
Softeer
์ฐ์ต๋ฌธ์ ๋ฅผ ๋ด์ Set์ ์ ํํด์ฃผ์ธ์. ์ทจ์ ํ์ธ
softeer.ai
์ ํ์ ์ธ ๊ทธ๋ํ ํ์ ๋ฌธ์ ๋ค.
dfs, bfs ๋ฌธ์ ๋ฅผ ์ ํผ ์ง ๋ ์ค๋๋์ด์ ์ฝ๊ฐ ๋ฒ๋ฒ ๊ฑฐ๋ ธ๋ค.
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int block[25][25];
int visited[25][25] = {0,};
int n; int c;
int dfs(int x, int y){
if (x >= 0 && x < n && y >= 0 && y < n){
if (visited[x][y] == 0 && block[x][y]==1){
visited[x][y] = 1; c++;
dfs(x-1,y);
dfs(x,y-1);
dfs(x+1,y);
dfs(x,y+1);
return c;
}
}
return -1;
}
int main(int argc, char** argv)
{
cin >> n;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
scanf("%1d", &block[i][j]);
}
}
int cnt = 0, result;
vector<int> v;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
c = 0; result = dfs(i,j);
if (result > 0) {
cnt++;
v.push_back(result);
}
}
}
//๊ฒฐ๊ณผ ์ถ๋ ฅ
cout<<cnt<<"\n";
sort(v.begin(), v.end());
for(int i=0; i<cnt; i++){
cout<<v[i]<<"\n";
}
return 0;
}
์์ ์ ๋ฐฑ์ค์ ๋น์ทํ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์์ ์์ ๊ธฐ๋ก์ ๋ค์ ์ฐพ์๋ดค๋๋ฐ, ๊ทธ๋๋ bfs๋ก ํ์์๋น
728x90
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > DFS,BFS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]14940๋ฒ: ์ฌ์ด ์ต๋จ๊ฑฐ๋ฆฌ (0) | 2023.07.03 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค]๋ฏธ๋กํ์ถ (1) | 2023.06.23 |
[๋ฐฑ์ค]7562๋ฒ: ๋์ดํธ์ ์ด๋ (0) | 2023.03.20 |
[๋ฐฑ์ค]14502๋ฒ: ์ฐ๊ตฌ์ (1) | 2023.03.11 |
[๋ฐฑ์ค]14503๋ฒ: ๋ก๋ด ์ฒญ์๊ธฐ (0) | 2023.03.08 |