#include <iostream> #include <algorithm> | |
| using namespace std;; | |
bool map[27][27]; | |
| bool visit[27][27]; | |
int num[313]; | |
| int cnt_d; | |
| int cnt; | |
| int dx[4]={1,-1,0,0}; | |
| int dy[4]={0,0,1,-1}; | |
| void dfs(int x, int y) | |
| { | |
| for(int i=0; i<4; i++) | |
| { | |
| int nx=x+dx[i]; | |
| int ny=y+dy[i]; | |
| if(map[nx][ny] && !visit[nx][ny]) | |
| { | |
| visit[nx][ny]=1; | |
| cnt_d++; | |
| dfs(nx,ny); | |
| } | |
| } | |
| } | |
| int main() | |
| { | |
| int N; | |
| cin >> N; | |
| char in[25]; | |
| for(int i=1; i<=N; i++) | |
| { | |
| cin >> in; | |
| for(int j=1; j<=N; j++) | |
| map[i][j]=in[j-1]-'0'; | |
| } | |
| for(int i=1; i<=N; i++) | |
| for(int j=1; j<=N; j++) | |
| if(!visit[i][j]&& map[i][j]) | |
| { visit[i][j]=1; cnt_d=1; dfs(i,j); num[cnt]=cnt_d; cnt++; } | |
| sort(num,num+cnt); // 0부터 cnt개의 단지 개수만큼 sort | |
| cout << cnt << endl; | |
| for(int i=0; i<cnt; i++) cout << num[i] << endl; | |
| } |
ㅠ-ㅠ 제대로 해놓고 sort 범위를 잘못정해서 계속 틀림
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
| 171117_2583_영역 구하기 (0) | 2017.11.17 |
|---|---|
| 171116_1987_알파벳 (0) | 2017.11.16 |
| 171114_1012_유기농 배추 (0) | 2017.11.14 |
| 171114_1697_숨바꼭질 (0) | 2017.11.14 |
| 171113_1260_dfs와 bfs (0) | 2017.11.13 |